我有一个文本文件,其中的字段由','分隔。符号。我想删除像“' 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
我会删除这些行,并希望将其存储在单独的文件中,例如delete.txt
S,F,T,Y
S,O,L,H
A,H,K,L
A,I,S,U
和file.txt包含
B,I,J,O
R,I,O,P
U,I,O,P
我尝试使用以下代码
sed -n '/S\|A/p' file.txt > delete.txt
此命令将删除的行删除为delete.txt,但在file.txt中包含已删除的图案
答案 0 :(得分:6)
在Mac OS X上,sed
需要备份选项-i
的参数,所以我写了类似的内容:
sed -i .bak -e '/[SA]/{w deleted.txt
d;}' file.txt
需要文件名后的换行符,即使使用GNU sed
。
答案 1 :(得分:1)
一个接一个地发出2个sed命令:
sed -n '/[SA]/p' file.txt > delete.txt
sed -i.bak '/[SA]/d' file.txt