我有一个文本文件,有 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
后缀以将其声明为文件名 - 然后将内容传递到文件。