Bash Can';t使用shell命令删除重复字符串

Bash Can';t使用shell命令删除重复字符串,bash,shell,Bash,Shell,我有一个名为“1.txt”的文件,其中包含以下内容: 111 111 222 777 1111 777 我正在尝试从中删除重复的字符串。sort-u 1.txt和sort 1.txt | uniq都返回以下内容: 111 1111 222 777 777 问题: 为什么字符串“777”仍然包含两次?如何删除副本?可能,其中一个“777”的末尾有一个隐藏字符。 尝试使用以下命令检查文件每行的长度: $ awk '{ print length($0); }' 1.txt 比较两个“777”行的

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

111
111
222
777
1111
777
我正在尝试从中删除重复的字符串。
sort-u 1.txt
sort 1.txt | uniq
都返回以下内容:

111
1111
222
777
777
问题:

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

可能,其中一个“777”的末尾有一个隐藏字符。 尝试使用以下命令检查文件每行的长度:

$ awk '{ print length($0); }' 1.txt
比较两个“777”行的长度,它们在您的文件中应该不同。

可能有一个“777”行的末尾有一个隐藏字符。 尝试使用以下命令检查文件每行的长度:

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

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

尝试使用sed删除行尾的非数字字符,然后使用sortuniq删除重复的字符串

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

尝试使用sed删除行尾的非数字字符,然后使用排序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

检查1.txt中的尾随空格/制表符。我无法重现此问题。我复制并粘贴了您上面的数字,并尝试了相同的命令,得到了所需的输出。您的文件中可能有一些不可见字符…请尝试使用
LC_ALL=C cat-vet 1.txt
查看文件,该文件将以可见格式显示通常不可见和非ASCII字符,包括将换行符(行尾)显示为“$”。我打赌这将显示两个“777”行之间的差异。请检查1.txt中的尾随空格/制表符。我无法重现此问题。我复制并粘贴了您上面的数字,并尝试了相同的命令,得到了所需的输出。您的文件中可能有一些不可见字符…请尝试使用
LC_ALL=C cat-vet 1.txt
查看文件,该文件将以可见格式显示通常不可见和非ASCII字符,包括将换行符(行尾)显示为“$”。我打赌这将显示两条“777”线之间的差异。