Bash
從文件中刪除重複的單詞
我有一個格式類似於的文本文件
path1/path2/path3a 34474538656 path1/path2/path3a 8115147679 path1/path2/path3b 2266371027 path1/path2/path3b 3860823 path1/path2/path3b 554247
這種模式還在繼續。我希望僅刪除第 1 列重複條目並將其列印為
path1/path2/path3a 34474538656 8115147679 path1/path2/path3b 2266371027 3860823 554247
這可能嗎?
列由單個空格分隔
所有路徑的長度相同
全域對齊將更易於閱讀。
這是一種方法:
$ awk '{ print seen[$1]++ ? " "$2 : $0}' file path1/path2/path3a 34474538656 8115147679 path1/path2/path3b 2266371027 3860823 554247
也可以寫成:
$ awk -v spacer=' ' '{ print seen[$1]++ ? spacer$2 : $0}' file path1/path2/path3a 34474538656 8115147679 path1/path2/path3b 2266371027 3860823 554247
或者
$ awk -v spacer=' ' '{ if(seen[$1]++){print spacer$2}else{print}}' file path1/path2/path3a 34474538656 8115147679 path1/path2/path3b 2266371027 3860823 554247
或者,在 中
perl
,即時計算墊片的長度:$ perl -lane '$spacer=$seen{$F[0]}++ ? " " x length($F[0]) : $F[0]; print "$spacer $F[1]"' file path1/path2/path3a 34474538656 8115147679 path1/path2/path3b 2266371027 3860823 554247