输入样本

输入样本

我有一个文本文件,有 6 个字段,以~.我需要将这些行写入多个新文件,这些文件的名称基于该行中的第五个字段,以便具有相同第五个字段的所有行最终都在同一个文件中。例如,foo第五个字段中的所有行都应以 结尾Src_foo.txt

输入样本

WatchListEntry_20180820_DLY_0.dat~3~NA~USD~AMLCOMP~2018-08-20~
WatchListEntry_20180820_DLY_2.dat~3~NA~USD~CBNABI~2018-08-20~
WatchListEntry_20180820_DLY_99.dat~3~NA~USD~AMLDW~2018-08-20~
BackOfficeTransaction_20180820_DLY_1.dat~5~0~USD~CBNABI~2018-08-

样本输出

Src_AMLCOMP.txt

WatchListEntry_20180820_DLY_0.dat~3~NA~USD~AMLCOMP~2018-08-20 

Src_AMLDW.txt

WatchListEntry_20180820_DLY_99.dat~3~NA~USD~AMLDW~2018-08-20

Src_CBNABI.txt

WatchListEntry_20180820_DLY_2.dat~3~NA~USD~CBNABI~2018-08-20
BackOfficeTransaction_20180820_DLY_1.dat~5~0~USD~CBNABI~2018-08-20

答案1

会走多远

awk -F"~" '{print >> ("Src_" $5 ".txt")}' file

我懂了?如果接近允许的打开文件的最大数量,您可能需要关闭输出文件。

答案2

尝试这个:

for i in `cat file.txt`
do
        File=`echo $i | awk -F '~' '{print "Src_"$5".txt"}'`
        echo "$i" >> $File
done
  • file.txt将一行一行的内容传递给for循环。
  • 提取第 5 个字段并Src_作为前缀和.txt后缀以将其声明为文件名
  • 然后将内容传递到文件。

相关内容