我想复制包含file1
到file2
的某些字词的行。
假设file1
:
ram 100 ct 50
gopal 200 bc 40
ravi 50 ct 40
krishna 200 ct 100
file2
应该只有包含“ct”的行,如下所示:
ram 100 ct 50
ravi 50 ct 40
krishna 200 ct 100
实现这一目标的最佳方式是什么?我有一个200mb的文件。
我使用了grep
,但我没有得到任何结果grep -n ct file1
。
答案 0 :(得分:9)
此awk
应该
awk '/ct/' file1 > file2
如果位置很重要
awk '$3=="ct"' file1 > file2
awk '$3~/ct/' file1 > file2
如果ct
是#3 中某些人的一部分,那么最后一个版本是可以的
与grep
grep ct file1 > file2
不需要 -n
,因为它会打印行号
与sed
sed -n '/ct/p' file1 > file2
答案 1 :(得分:0)
egrep -n '\bct\b' file1 > file2
顺便说一句,grep -n选择行和行号。如果那不是你的意图,那么grep ct file1 > file2
就足够了。
答案 2 :(得分:0)
awk '$3=="ct"' file1 > file2
这仅过滤第三列必须与字符串ct
完全匹配的行。
答案 3 :(得分:0)
我知道我迟到了,但只是想补充说你可以在vim中做到这一点。创建该文件的副本,然后运行
:g!/pattern/d
(删除所有没有模式的行)
所以,
:g!/^\w+ \d+ ct \d+/ \\ view the lines
:g!/^\w+ \d+ ct \d+/d \\ delete lines
可以找到更多命令here。