为两个文本文件中的多行扩展awk脚本,如果两个文件只有一条记录,则不扩展
我可以生成这个3.txt输出为两个文本文件中的多行扩展awk脚本,如果两个文件只有一条记录,则不扩展,awk,Awk,我可以生成这个3.txt输出 AA;BB;CC;DD; 从2个文本文件。两个文件只有一条记录 1.txt AA;BB; CC;DD;BB;AA; UU; AA;BB; ZZ;KK; CC;DD;BB;AA; LL;KK; GH;ZZ;SS; 2.txt AA;BB; CC;DD;BB;AA; UU; AA;BB; ZZ;KK; CC;DD;BB;AA; LL;KK; GH;ZZ;SS; 我使用这个awk脚本 BEGIN{ FS=OFS=";&quo
AA;BB;CC;DD;
从2个文本文件。两个文件只有一条记录
1.txt
AA;BB;
CC;DD;BB;AA;
UU;
AA;BB;
ZZ;KK;
CC;DD;BB;AA;
LL;KK;
GH;ZZ;SS;
2.txt
AA;BB;
CC;DD;BB;AA;
UU;
AA;BB;
ZZ;KK;
CC;DD;BB;AA;
LL;KK;
GH;ZZ;SS;
我使用这个awk脚本
BEGIN{
FS=OFS=";"
}
{
for(i=1;i<=NF;i++){
if(!seen[$i]++){ val=(val?val OFS:"")$i }
}
print val
delete seen
val=""
}
但我想要什么<我需要更多地考虑一个单一的记录。我试着根据这种情况调整这个脚本。您可以看到,现在这两个文件不仅有一条记录
1.txt
AA;BB;
CC;DD;BB;AA;
UU;
AA;BB;
ZZ;KK;
CC;DD;BB;AA;
LL;KK;
GH;ZZ;SS;
2.txt
AA;BB;
CC;DD;BB;AA;
UU;
AA;BB;
ZZ;KK;
CC;DD;BB;AA;
LL;KK;
GH;ZZ;SS;
我尝试生成的输出3.txt如下
UU;
AA;BB;CC;DD;
ZZ;KK;LL;GH;SS;
处理逻辑:
上面的代码只是在数组索引的散列查找中使用文字字符串,所以它不关心输入中有哪些字符但是关于示例输出:如果在2.txt中,在1.txt中也有公共字段。例如
BB;AA
然后需要将它们连接在一行中,即AA;BB;复写的副本;DD
;不需要排序,例如,如果输出为BB,则不相关;AA;DD;抄送代码>唯一需要的条件是避免在同一行中重复字段
当我说“避免重复”时,我的意思是避免这个输出
AA;BB;CC;DD;BB;AA;
因为输出应该是
AA;BB;CC;DD;
也许这就是你想要的:
BEGIN{FS=OFS=";"}
{sub(/;$/,"")}
NR==FNR{
for (i=1;i<=NF;++i)
for (j=1;j<=NF;++j)
if (j!=i&&!b[$i,$j]++)
a[$i,++c[$i]]=$j
next
}
{
delete b
for (i=1;i<=NF;++i)
++b[$i]
for (i=1;i<=NF;++i)
for (j=1;j<=c[$i];++j)
if (!b[a[$i,j]]++)
$(NF+1)=a[$i,j]
print
}
以下是之前的一些问题(可能是你的问题——你可能想仔细看看,然后研究如何正确地提出你的问题):
感谢您的努力。很抱歉,您获取输出的逻辑不清楚,请您在这个问题中解释得更清楚一些。看起来和作业一样,这是否回答了您的问题?我我很困惑,如果你有UU代码>和CC;DD;BB;AA代码>为什么不会是UU;复写的副本;DD;BB;AA代码>??第一行的1.txt
和2.txt
之间没有重复的字段?是的,这非常有效。非常感谢。