Unix 如何使用GREP或SED从文件中获取特殊字符的不同列表?

Unix 如何使用GREP或SED从文件中获取特殊字符的不同列表?,unix,find,grep,special-characters,Unix,Find,Grep,Special Characters,我有一个文件,其中包含大约30000条以“|”分隔的记录。我只需要从文件中获取特殊字符的不同列表 例如: 123 | fasdf |%df&| pap,来了|! 234%^&asdf | 34 |'”:| 我的输出应该是: |%&,!^': 任何帮助都将不胜感激。 谢谢 维尔拉 您必须在括号内列出所有特殊字符 这将返回其自身行中的每个唯一特殊字符。如果确实需要包含这些字符的字符串,则必须在之后删除换行符,例如: grep -o '[|%&,!^":]' input | sort -u |

我有一个文件,其中包含大约30000条以“|”分隔的记录。我只需要从文件中获取特殊字符的不同列表

例如: 123 | fasdf |%df&| pap,来了|! 234%^&asdf | 34 |'”:|

我的输出应该是: |%&,!^':

任何帮助都将不胜感激。 谢谢 维尔拉

您必须在括号内列出所有特殊字符

这将返回其自身行中的每个唯一特殊字符。如果确实需要包含这些字符的字符串,则必须在之后删除换行符,例如:

grep -o '[|%&,!^":]' input | sort -u | tr -d '\n'
更新:

如果需要删除“a-zA-Z0-9”集合以外的所有字符,则可以使用此字符:

grep -o '[^a-zA-Z0-9]' input | sort -u | tr -d '\n'
您必须在括号内列出所有特殊字符

这将返回其自身行中的每个唯一特殊字符。如果确实需要包含这些字符的字符串,则必须在之后删除换行符,例如:

grep -o '[|%&,!^":]' input | sort -u | tr -d '\n'
更新:

如果需要删除“a-zA-Z0-9”集合以外的所有字符,则可以使用此字符:

grep -o '[^a-zA-Z0-9]' input | sort -u | tr -d '\n'
输出

!"%&',:^||
您可以将第一行
echo….
替换为
cat文件名

输出

!"%&',:^||

您可以将第一行
echo….
替换为
cat fileName

您定义的“特殊”字符是什么?您定义的“特殊”字符是什么?谢谢您的回复。我不知道我将在文件中得到哪些特殊字符。我只想打印除0-9、a-z和a-z以外的所有字符。谢谢回复。我不知道我将在文件中得到哪些特殊字符。我只想打印除0-9、a-z和a-z以外的所有字符。您的输出不清晰(两个竖条),但我想您不希望它清晰。@Diing_sphynx:我一直忘了
末尾的
print
将打印最后的$0。我已经修复了我的解决方案,感谢您的反馈和好运。您的输出不是不同的(两个竖条),但我想我不希望它是不同的。@Diing_sphynx:我一直忘了,
结尾的
打印
将打印最后的$0。我已经修复了我的解决方案,感谢您的反馈,祝您好运。