如何将文本文件拆分为新文件

如何将文本文件拆分为新文件

我有一个以下格式的文本文件:

001|fileA
002|fileA
003|fileA
004|fileB
005|fileB
006|fileC
.
.
.
xxx|fileX

我需要将这个文件拆分为与每个“|”对应的文件。新文件的名称,例如 fileA 、fileB、fileC...fileX 。

答案1

尝试

 awk -F\| '{ print $1 > $2 ; }' file

在哪里

  • -F\|告诉 awk 用作|分隔符,|需要逃脱。
  • > $2将 print 重定向到$2的值。

如果有许多(> 10)个文件:

for x in $(awk -F\| '!a[$2]++ { print $2}' file)
do
    awk -F\| -v f="$x" '$2 == f { print $1}' file > "$x"
done
  • 第一个 awk 仅列出 uniq 文件名
  • 52 个文件就可以了,但如果是数百个文件,速度可能会变慢。

另一种选择,只要字段可以“安全”地放入 shell 中

awk -F\| '{printf "echo %s >> %s\n",$1,$2;}' file | bash
  • 请务必先删除fileX,以防重新运行。

相关内容