Linux
如何從行中刪除重複的數字?
輸入文件
1 2 3 1 4 5 6 1 1 2 34 5 6 2
我想要這樣的輸出
1 2 3 4 5 6 34
(所有重複號碼只能列印一次)
Perl 來救援!
perl -lane 'print join " ", grep ! $seen{$_}++, @F' < file
-l
從輸入中刪除換行符並將它們添加到輸出-n
逐行處理輸入-a
將空格上的每個輸入拆分為 @F 數組@F 數組由grep迭代,只保留第一次看到的元素(即它們在 %seen 散列中的值為零,因為零的否定為真)。加入只是將它們粘在一起。
注意: 此解決方案將結果保持在原始順序!
awk
使用和的簡單方法tr
。如果您的內容在文件中,則FILE
:$ tr ' ' '\n' < FILE | awk '!x[$0]++' | tr '\n' ' '
例子
$ echo "1 2 3 1 4 5 6 1 1 2 34 5 6 2" | \ tr ' ' '\n' | awk '!x[$0]++' | tr '\n' ' ' 1 2 3 4 5 6 34
這個怎麼運作
tr ' ' '\n'
- 將空格切換到換行符awk '!x[$0]++'
- 列印不重複的字元tr '\n' ' '
- 將換行符切換回空格