我有一个包含适用于它们的 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 是当前处理的时间戳。
答案1
cut -f2- -d\| file.txt | tr \| '\n' | sort -u | sed 's/$/|sysdate/'
cut
从输入中提取列,-d
告诉它要使用什么分隔符,-f
指定我们想要哪些列。因此,这里我们提取从 2 开始的每一列|
作为分隔符,它需要反斜杠,因为|
在 shell 中有特殊含义tr
音译,即|
用换行符替换所有的sort -u
排序并丢弃重复项sed
s///
是替换,这里将行尾 ($
) 替换为|sysdate
要包含实际日期,只需将最后一个条目更改为
sed 's/$/|'"$(date)"/
其中$()
是命令替换,它将命令替换为其输出。