Bash 删除带有2个单词的重复行
我有一个保存newdir和finish目录的文件:Bash 删除带有2个单词的重复行,bash,Bash,我有一个保存newdir和finish目录的文件: newdir 26.01.2020_17:28 Directory1 finish 26.01.2020_17:28 Directory1 newdir 26.01.2020_17:29 Directory2 finish 26.01.2020_17:29 Directory2 newdir 26.01.2020_17:28 Directory3 finish 26.01.2020_17:28 Directory4 newdir 26.01.2
newdir 26.01.2020_17:28 Directory1
finish 26.01.2020_17:28 Directory1
newdir 26.01.2020_17:29 Directory2
finish 26.01.2020_17:29 Directory2
newdir 26.01.2020_17:28 Directory3
finish 26.01.2020_17:28 Directory4
newdir 26.01.2020_17:29 Directory5
finish 26.01.2020_17:29 Directory3
newdir 26.01.2020_17:28 Directory6
finish 26.01.2020_17:28 Directory6
newdir 26.01.2020_17:29 Directory7
finish 26.01.2020_17:29 Directory7
newdir 26.01.2020_17:28 Directory8
finish 26.01.2020_17:28 Directory9
newdir 26.01.2020_17:29 Directory10
finish 26.01.2020_17:29 Directory11
我想删除所有目录名和newdir匹配的地方并完成匹配。
或者换一种说法:目录名是否与newdir协商并完成,然后在文件中删除它
newdir 26.01.2020_17:29 Directory2
finish 26.01.2020_17:29 Directory2
示例:Directory2有newdir和finish,然后在文件中删除这两个
newdir 26.01.2020_17:29 Directory2
finish 26.01.2020_17:29 Directory2
不幸的是,我没有办法解决这个问题。。
有人能帮我吗
谢谢
问候
编辑:
文件中的预期结果:
finish 26.01.2020_17:28 Directory4
newdir 26.01.2020_17:29 Directory5
newdir 26.01.2020_17:28 Directory8
finish 26.01.2020_17:28 Directory9
newdir 26.01.2020_17:29 Directory10
finish 26.01.2020_17:29 Directory11
我会这样做,但awk也可能是一个好方法
sort -k3 dirlist | uniq -u -f2
它将按第3列对文件目录列表进行排序,并根据第3列仅获取唯一的行
输出
newdir 26.01.2020_17:29 Directory10
finish 26.01.2020_17:29 Directory11
finish 26.01.2020_17:28 Directory4
newdir 26.01.2020_17:29 Directory5
newdir 26.01.2020_17:28 Directory8
finish 26.01.2020_17:28 Directory9
编辑
newdir 26.01.2020_17:29 Directory10
finish 26.01.2020_17:29 Directory11
finish 26.01.2020_17:28 Directory4
newdir 26.01.2020_17:29 Directory5
newdir 26.01.2020_17:28 Directory8
finish 26.01.2020_17:28 Directory9
使用awk(这也将保留订单)
awk'{seen[$3]++;line[++count]=$0;key[count]=$3}
结束{
对于(i=1;我可以请您在您的帖子中发布示例预期输出,然后让我们知道您提到希望删除
行;您是在寻找更新源文件的解决方案,还是需要生成新文件(减去删除的
行)?