我有一个文本文件,其中的字段用','符号分隔.我想删除包含'S'和'A'等图案的行,并将删除的行重定向到其他文件,原始文件不包含已删除的图案.
例如,假设我的文件数据如下:
S,F,T,Y
B,I,J,O
S,O,L,H
R,I,O,P
A,H,K,L
U,I,O,P
A,I,S,U
Run Code Online (Sandbox Code Playgroud)
我将删除这些行,并希望将其存储在单独的文件中,例如delete.txt
S,F,T,Y
S,O,L,H
A,H,K,L
A,I,S,U
Run Code Online (Sandbox Code Playgroud)
和file.txt包含
B,I,J,O
R,I,O,P
U,I,O,P
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下代码
sed -n '/S\|A/p' file.txt > delete.txt
Run Code Online (Sandbox Code Playgroud)
此命令将删除的行删除为delete.txt,但在file.txt中包含已删除的模式
在Mac OS X上,sed需要备份选项的参数-i,所以我写了类似的东西:
sed -i .bak -e '/[SA]/{w deleted.txt
d;}' file.txt
Run Code Online (Sandbox Code Playgroud)
即使使用GNU,也需要文件名后面的换行符sed.