我正在寻找将文本复制到另一个文件中的命令,但是匹配的文本需要与原始文件中的位置完全相同。有人可以帮我吗? 例如:
$ cat file1
one
two
three
four
five
three
$ grep three file1 > newfile1
以上命令的输出将始终仅在第一行和第二行显示three
。有没有办法让我在newfile1
的第三行和第六行中获得匹配的文本(与原始文件中的文本相同)?
答案 0 :(得分:1)
让我们重新构造问题:与其将它视为对字符串three
的搜索,不如重新构造问题:打印每行,但擦除不包含three
的行。
$ awk '!/three/{$0=""} {print}' file1
three
three
!/three/
匹配不包含搜索字符串的行,{$0=""}
清除它们,无条件的{print}
打印每一行。
一种更简短(但更神秘)的写法是将{print}
替换为1
,
$ awk '!/three/{$0=""} 1' file1