Dag*_*ang 24 bash awk text-processing sed
我有一个看起来像这样的文件:
2011-03-21 name001 line1
2011-03-21 name002 line2
2011-03-21 name003 line3
2011-03-22 name002 line4
2011-03-22 name001 line5
Run Code Online (Sandbox Code Playgroud)
对于每个名字,我只想要它的最后一次出现.所以,我希望结果如下:
2011-03-21 name003 line3
2011-03-22 name002 line4
2011-03-22 name001 line5
Run Code Online (Sandbox Code Playgroud)
有人可以用bash/awk/sed给我一个解决方案吗?
Pau*_*ulP 38
此代码通过第二个字段获取uniq行,但是从文件或文本的末尾(如结果示例中)
tac temp.txt | sort -k2,2 -r -u
Run Code Online (Sandbox Code Playgroud)
pep*_*uan 11
awk '{a[$2]=$0} END {for (i in a) print a[i]}' file
Run Code Online (Sandbox Code Playgroud)
如果出现顺序很重要:
基于第一次出现:
awk '!a[$2] {b[++i]=$2} {a[$2]=$0} END {for (i in b) print a[b[i]]}' file
Run Code Online (Sandbox Code Playgroud)基于上次出场:
tac file | awk '!a[$2] {b[++i]=$2} {a[$2]=$0} END {for (i in b) print a[b[i]]}'
Run Code Online (Sandbox Code Playgroud)| 归档时间: |
|
| 查看次数: |
20334 次 |
| 最近记录: |