我需要使用awk根据4美元的数据拆分文件1中的数据。目标文件名应取自映射文件2。
档案1
文本;文本;文本; AB;文本
文本,文本,文本; AB;文本
文本,文本,文本; CD;文本
文本,文本,文本; CD;文本
文本,文本,文本; EF;文本
文本;文本;文本; EF;文本
文件2
AB;有效
CD; not_valid
EF; not_specified
所需的输出,其中文件名是文件2中$ 2的值。
文件有效
文本;文本;文本; AB;文本
文本;文本;文本; AB;文本
文件not_valid
文本;文本;文本; CD;文本
文本;文本;文本; CD;文本
文件not_specified
文本;文本;文本; EF;文本
文本;文本;文本; EF;文本
有关如何执行拆分的任何建议?
答案 0 :(得分:3)
使用awk
:
awk -F';' 'FNR==NR {a[$1]=$2;next} $4 in a {print > a[$4]}
$4 != p {if (p) close(a[p]); p=$4}' file2 file1
答案 1 :(得分:0)
似乎只是代码的第一部分可以工作:
awk -F';' 'FNR==NR {a[$1]=$2;next} $4 in a {print > a[$4]}' file2 file1
那么,为什么后半部分代码:
$4 != p {if (p) close(a[p]); p=$4
需要吗?谢谢!