如何使用 awk 或 grep 或 sed 命令将文件的各个部分提取到 Linux 中的单独文件中

如何使用 awk 或 grep 或 sed 命令将文件的各个部分提取到 Linux 中的单独文件中

我有如下所示的文本文件:

输入文件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

相关内容