从一个文件复制包含word的行到linux中的另一个文件

时间:2014-03-11 07:45:12

标签: linux sed awk grep

我想复制包含file1file2的某些字词的行。

假设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

4 个答案:

答案 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