无法使用Shell命令删除重复的字符串

时间:2018-12-26 20:40:05

标签: bash shell

我有一个名为“ 1.txt ”的文件,其中包含以下内容:

111
111
222
777
1111
777

我正在尝试从中删除重复的字符串。 sort -u 1.txtsort 1.txt | uniq都返回此:

111
1111
222
777
777

问题:

为什么字符串“ 777”仍然包含两次?如何删除重复项?

2 个答案:

答案 0 :(得分:2)

“ 777”之一可能在结尾处带有隐藏字符。 尝试使用以下方法检查文件每一行的长度:

$ awk '{ print length($0); }' 1.txt

比较两条“ 777”行的长度,它们在您的文件中应该不同。

答案 1 :(得分:0)

尝试使用 sed 删除行末的非数字字符,然后使用 sort uniq 删除重复的字符串。

sed  's/[^0-9]\{0,\}$//' 1.txt | sort | uniq

where s : to replace matched string 
      [^0-9] : to match non-digit char
      \{0,\} : zero or more pattern match
      $ : matches the end of lines