我有如下所示的文本文件:
输入文件1.txt
.......................
cha21 1 3 5 nar
cha21 2 3 6 piy
cha23 2 3 5 ram
cha23 3 3 3 dam
cha27 5 3 7 pam
................................
我想将与“cha21”、“cha23”和“cha27”行对应的所有5列提取到3个不同的输出文件中(例如cha21.txt、cha23.txt、cha27.txt)。
输出文件
cha21.txt
..........
cha21 1 3 5 nar
cha21 2 3 6 piy
......................
cha23.txt
cha23 2 3 5 ram
cha23 3 3 3 dam
...................................
cha27.txt
cha27 5 3 7 pam
...........................
我可以使用 grep 命令 3 次对 3 个文件执行此操作...无论如何我可以一次执行所有操作,即一个命令,因为我需要提取 100 个输出文件。
答案1
我会尝试
awk '{print >> $1 ".txt" ;}'
在哪里
print
打印整行。>> $1 ."txt"
将此行写入(附加)到 $1 指示的文件中,并.txt
添加。
编辑:
如果您有注释行、带点的行等
尝试
awk '$1 ~ /cha/ {print >> $1 ".txt" ;}'
这只会填充以“cha”开头的文件。
答案2
这很容易awk
:
awk '{print $0 >> $1".txt"}' file1.txt