Awk 文本处理以创建唯一ID';s

Awk 文本处理以创建唯一ID';s,awk,sed,Awk,Sed,我有一个文件,其ID和名称如下: 1234|abc|cde|fgh 5678|ijk|abc|lmn 9101|cde|fgh|klm 1213|klm|abc|cde 我需要一个只有唯一名称的文件作为列表 输出文件: abc|sysdate cde|sysdate fgh|sysdate ijk|sysdate lmn|sysdate klm|sysdate 其中sysdate是当前处理的时间戳 请你帮忙。还请求对建议的代码进行解释。此代码的作用: awk -F\| '{ for(i=2;

我有一个文件,其ID和名称如下:

1234|abc|cde|fgh
5678|ijk|abc|lmn
9101|cde|fgh|klm
1213|klm|abc|cde
我需要一个只有唯一名称的文件作为列表

输出文件:

abc|sysdate
cde|sysdate
fgh|sysdate
ijk|sysdate
lmn|sysdate
klm|sysdate
其中sysdate是当前处理的时间戳

请你帮忙。还请求对建议的代码进行解释。

此代码的作用:

awk -F\| '{ for(i=2; i <= NF; i++) a[$i] = a[$i] FS $1 }' input.csv
此脚本不打印任何内容

你想要的是这样的:

awk -F'|' '{for(i=2;i<=NF;i++){if(seen[$i] != 1){print $i, strftime(); seen[$i]=1}}}' OFS='|' input.csv

您可以更改sysdate的格式。请参阅gawk strftime的文档

您看到的否决票可能是由于没有包括您自己尝试解决此问题的内容,这是stackoverflow所必需的
awk
是解决此问题的好选择,请访问学习资源和其他有用链接我对awk完全陌生。。。因此寻求帮助。。。所以我可以通过实时解决方案学习。我已经尝试了
awk-F\|{(i=2;i当您处理abc两次时会发生什么?只有第一次计数,或者您应该在输出文件中有多行abc?不,我只需要唯一的值..所以只有一次我需要一个条目非常感谢您..而不是时间戳..我如何用日期替换?@Vandhana我给了您strftime的文档。只需将strftime与表单一起使用即可您不需要,例如strftime(“%Y%m%d”)
awk -F'|' '{for(i=2;i<=NF;i++){if(seen[$i] != 1){print $i, strftime(); seen[$i]=1}}}' OFS='|' input.csv
abc|Thu Oct 18 10:40:13 CEST 2018
cde|Thu Oct 18 10:40:13 CEST 2018
fgh|Thu Oct 18 10:40:13 CEST 2018
ijk|Thu Oct 18 10:40:13 CEST 2018
lmn|Thu Oct 18 10:40:13 CEST 2018
klm|Thu Oct 18 10:40:13 CEST 2018