如何按分隔列将文本文件逐行拆分为 2 个文本文件?

How can I split a text file line by line into 2 text files by delimited column?

我尝试了以下各种组合:

awk -F" ||| " '{[=10=]=}1' source_file.txt > column1.txt
awk -F" ||| " '{[=10=]=}2' source_file.txt > column2.txt

awk 'BEGIN {FS=" ||| ";}{print }' source_file.txt > column1.txt
awk 'BEGIN {FS=" ||| ";}{print }' source_file.txt > column2.txt

我得到整行(例如 foo bar ||| baz)或只得到第一个单词(例如 foo),而不是所需的输出。

如果您想提供帮助,这里有一个示例文本文件:

source_file.txt

foo bar ||| baz
qux ||| quux
corge grault ||| garply waldo
fred |||
xyzzy ||| thud

这是所需的输出:

column1.txt

foo bar
qux
corge grault
fred
xyzzy

column2.txt

bar
quux
garply waldo

thud
awk -F' \|\|\| ?' '{print  > "column1"; print  > "column2"}' file

或更普遍

awk -F' \|\|\| ?' '{for(i=1;i<=NF;i++) print $i > "column"i}' file

你可以试试

cat /tmp/a | tr -s '|' | cut -d'|' -f1 #for part 1

cat /tmp/a | tr -s '|' | cut -d'|' -f2 | sed -E "s/^[[:space:]]+//g" #for part 2

tr 标志将分隔符挤在一起。