我正在尝试在Unix中格式化文件(在这种情况下为RHEL)。
文件1
AAAAA|AAA|1582|YNYY
BBBBB|BAV|1234|NYYY
文件1有1个样本记录(行)。每个记录中有4列。在第4列中,我们有4个状态值。
文件2
20190103|W 2019 01
20190203|W 2019 02
20190303|W 2019 03
20190403|W 2019 04
输出必须如下:
AAAAA|1582|Y|20190103|W 2019 01
AAAAA|1582|N|20190203|W 2019 02
AAAAA|1582|Y|20190303|W 2019 03
AAAAA|1582|Y|20190403|W 2019 04
BBBBB|1234|N|20190103|W 2019 01
BBBBB|1234|Y|20190203|W 2019 02
BBBBB|1234|Y|20190303|W 2019 03
BBBBB|1234|Y|20190403|W 2019 04
我尝试了AWK和粘贴,但无法获得所需的输出。请引导我解决这个问题。
使用awk
awk -F'|' '{split($4,a,""); b=$1"|"$2"|"$3} { getline < "file2"; for (i in a ) print b"|"a[i]"|"$0 }' < file1`
演示:
$awk -F'|' '{split($4,a,""); b=$1"|"$2"|"$3} { getline < "file2"; for (i in a ) print b"|"a[i]"|"$0 }' < file1
AAAAA|AAA|1582|Y|20190103|W 2019 01
AAAAA|AAA|1582|N|20190103|W 2019 01
AAAAA|AAA|1582|Y|20190103|W 2019 01
AAAAA|AAA|1582|Y|20190103|W 2019 01
BBBBB|BAV|1234|N|20190203|W 2019 02
BBBBB|BAV|1234|Y|20190203|W 2019 02
BBBBB|BAV|1234|Y|20190203|W 2019 02
BBBBB|BAV|1234|Y|20190203|W 2019 02
$
说明:
awk -F'|'
'{split($4,a,"");
b=$1"|"$2"|"$3}
getline < "file2";
[for (i in a ) print b"|"a[i]"|"$0
a
并附加变量b
和来自file2
的输入记录
注意:当您使用内部变量getline
的值$0, NF, NR
时被更改