如何將文字檔案拆分為新文件

如何將文字檔案拆分為新文件

我有一個以下格式的文字檔:

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,以防重新執行。

相關內容