管道grep结果为awk

时间:2014-05-27 07:03:18

标签: awk sed grep

我想删除包含一些文本作为列标题的csv文件中的列。

我希望output_file与grep找到的文件名相同。

我做了以下

grep -l "pattern" * | xargs -0 awk -F'\t' '{print $1"\t"$2}' > output_file

如何将结果输出到grep找到的同一文件?

谢谢。

1 个答案:

答案 0 :(得分:1)

这样做:

grep -l "pattern" * | xargs awk -F'\t' '{print $1"\t"$2 > FILENAME}'

FILENAME是输入文件的awk变量

示例:

$ cat file1
ABC zzz
EFG xxx
HIJ yyy
$ cat file2
123 aaa
456 bbb
789 ccc

grep -l "123" * | xargs awk '{print $2"\t"$1 > FILENAME}'

我在包含“123”的文件中切换第1列和第2列并覆盖file2。

$ cat file1
ABC zzz
EFG xxx
HIJ yyy
$ cat file2
aaa    123
bbb    456
ccc    789