我有一个文件test.dat,里面有多个文件,如a1,a2,a3 b1,b2,b3 c1,c2,c3。我想保留a,b和c的最新版本。
我使用了cat test.dat|sort -r|sed -ne ''1',$p'
但它给了我最新的一个系列,我想要a,b和c系列的最新版本。有任何建议请帮忙。
答案 0 :(得分:0)
您可以使用cat test.dat | ls -t
-t
选项将按日期按升序列出文件。
答案 1 :(得分:0)
根据您对评论的澄清,我完全重写了我的答案。假设文件输入如下:
rul@helicon:~$ cat test.dat
/home/user/a_4.0.2
/home/user/a_3.0.2
/home/user/a_1.0.1
/home/user/b_R2.1.1
/home/user/b_2.1.1
/home/user/b_1.2.1
/home/user/b_1.1.1
/home/user/c_R1.1.1
/home/user/c_5.1.1
/home/user/c_3.1.1
/home/user/c_2.1.1
/home/user/c_1.1.1
您可以通过以下方式获取您正在寻找的文件:
rul@helicon:~$ for i in $(sort test.dat | cut -d_ -f1 | uniq); do grep -E ^$i test.dat | sort -r | head -n1; done
/home/user/a_4.0.2
/home/user/b_R2.1.1
/home/user/c_R1.1.1
有点难看,但它确实有效。