将grep结果传送到awk
我想从csv文件中删除列,其中包含一些作为列标题的文本 我希望输出文件与grep找到的文件名相同 我做了以下几件事将grep结果传送到awk,awk,sed,grep,Awk,Sed,Grep,我想从csv文件中删除列,其中包含一些作为列标题的文本 我希望输出文件与grep找到的文件名相同 我做了以下几件事 grep -l "pattern" * | xargs -0 awk -F'\t' '{print $1"\t"$2}' > output_file 如何将结果输出到grep找到的同一个文件中 谢谢。只需执行以下操作: grep -l "pattern" * | xargs awk -F'\t' '{print $1"\t"$2 > FILENAME}' FILEN
grep -l "pattern" * | xargs -0 awk -F'\t' '{print $1"\t"$2}' > output_file
如何将结果输出到grep找到的同一个文件中
谢谢。只需执行以下操作:
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列,并覆盖文件2
$ cat file1
ABC zzz
EFG xxx
HIJ yyy
$ cat file2
aaa 123
bbb 456
ccc 789
您可能想使用
grep-l…| xargs awk…
,但是awk
没有覆盖它修改的文件的选项,好吧。我有一个脚本ow
(用于“覆盖”),是我多年前从“UNIX编程环境”偷来的,可以使用。如果您有GNUsed
,您可能可以使用它,因为它有一个覆盖选项(或者Mac OS X或BSDsed
)。对于sed
,打印两个制表符分隔的列(可能是很多列中的一列)并不太费力(尽管这也不是很简单)。