简体   繁体   English

使用awk连接两行

[英]concatenation of two lines using awk

I have a file with each row having 74 columns. 我有一个文件,每一行有74列。 I have been trying to combine these lines if the first and second column matches. 如果第一列和第二列匹配,我一直在尝试合并这些行。 The file looks like below. 该文件如下所示。

CHECK_IN|2000000000|MS|XXXX|XXXX|N|34|N|N|N|N|N|Y|N|N|N|N|N|123456|aaaaaa|122333|||||||||||AAAAAA|BBBBBBB|CCCCCCC|||||||||||||||||||1000123|aaaa|N|qwerty||REGISTERED|REGISTERED|REGISTERED|UNREGISTERED|19-05-2015|Video|EDM||||||||||xxxxx
CHECK_IN|2000000000|MS|XXXX|XXXX|N|34|N|Y|N|N|N|N|N|N|N|N|N|345676|Abcgdwejj|aaaaaaa||||||||||||||||||||||||NNNNNNN||||||||1000001|cccccc|N|qyuirt||REGISTERED|REGISTERED|REGISTERED|UNREGISTERED|19-05-2015|Video|EDM||||||||||xxxxx

I have used the below script: 我使用了以下脚本:

cat sample_file4.txt | awk -F "|" '{line="";
for(i = 3; i <= NF ;i++)
line = line $i"|";
table[$1"|"$2]=table[$1"|"$2]"|"line;}
END { for (key in table) print key "==>" table[key];}' > output9.txt

The record is not appended to the first line.Except the key values, the same line is being repeated.like below 记录未添加到第一行,除键值外,同一行被重复,如下所示

1.CHECK_IN|2000000000==>|MS|XXXX|XXXX|N|34|N|N|N|N|N|Y|N|N|N|N|N|123456|aaaaaa|122333|||||||||||AAAAAA|BBBBBBB|CCCCCCC|||||||||||||||||||1000123|aaaa|N|qwerty||REGISTERED|REGISTERED|REGISTERED|UNREGISTERED|19-05-2015|Video|EDM||||||||||xxxxx
2.||MS|XXXX|XXXX|N|34|N|Y|N|N|N|N|N|N|N|N|N|345676|Abcgdwejj|aaaaaaa||||||||||||||||||||||||NNNNNNN||||||||1000001|cccccc|N|qyuirt||REGISTERED|REGISTERED|REGISTERED|UNREGISTERED|19-05-2015|Video|EDM||||||||||xxxxx

Please help me to get them onto single line. 请帮助我将它们放在一行上。

I would write this: 我会这样写:

awk '
    BEGIN {FS = OFS = "|"}
    { key = $1 SUBSEP $2 }
    !(key in lines) {lines[key]=$0; next}
    {$1=$2=""; line=$0; sub(/^../, "", line); lines[key] = lines[key] FS line}
    END {for (key in lines) {print lines[key]}}
' file

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM