一个用vi/shell使用正则表达式进行文本处理的问题 需求如下:
vim吧
全部回复
仅看楼主
level 6
挖掘狂人
楼主
一个用vi/shell使用正则表达式进行文本处理的问题
需求如下:
输入文件input.txt:
a1
a2
a3
a4
b1
b2
a5
b3
b4
b5
要求输出文件output.txt为:
a1
a4
b1
b2
a5
b3
b5
即去掉第N行,N满足的条件是:第N行与第N-1、第N+1行的首字母都相同(不去掉首行与末行)。
请问使用vi的替换命令或shell能完成此需求吗,给点提示也行,谢谢。(我用C++已经实现了,现在就是想知道能不能用正则表达式实现)
#vim#
2024年12月24日 06点12分
1
level 5
ly50247
这种非通用的功能按正常逻辑写就行,比如用 shell,依次读取每一行,然后判断一下是否需要保留,需要保留就输出来,比用 C++ 省不了多少事(用 awk 或者 perl 能省些事,但逻辑也是一样的)。
2025年03月20日 07点03分
2
level 5
ly50247
比如用 zsh(用的第三方客户端,不知道为什么代码发不出来):
2025年03月20日 08点03分
3
ly50247
漏了最后一行(看来是不能输入大于号):tail -n 1 input.txt 〉〉 output.txt
2025年03月20日 08点03分
1