Centos 7标准输出(>)与原始文件中的位置相同

时间:2018-08-31 00:14:23

标签: sh

我正在寻找将文本复制到另一个文件中的命令,但是匹配的文本需要与原始文件中的位置完全相同。有人可以帮我吗? 例如:

$ cat file1
one
two
three
four
five
three

$ grep three file1 > newfile1

以上命令的输出将始终仅在第一行和第二行显示three。有没有办法让我在newfile1的第三行和第六行中获得匹配的文本(与原始文件中的文本相同)?

1 个答案:

答案 0 :(得分:1)

让我们重新构造问题:与其将它视为对字符串three的搜索,不如重新构造问题:打印每行,但擦除不包含three的行。

$ awk '!/three/{$0=""} {print}' file1


three


three

!/three/匹配不包含搜索字符串的行,{$0=""}清除它们,无条件的{print}打印每一行。

一种更简短(但更神秘)的写法是将{print}替换为1

$ awk '!/three/{$0=""} 1' file1