我有一个文件,其中包含大约30000条由"|"分隔的记录。我只需要从文件中获得一个特殊字符的不同列表。
例如:123|fasdf|%df&爸爸,来了!234 |%^&asdf|34|'":|
我的输出应该是:|%&,!^'":
如有任何帮助,我们将不胜感激。谢谢Velraj。
grep -o '[|%&,!^":]' input | sort -u
你必须在括号内列出你所有的特殊字符。
这将在其自己的行中返回每个唯一的特殊字符。如果你真的需要一个包含这些字符的字符串,你必须在之后删除换行符,例如:
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 "123|fasdf|%df&|pap,came|! 234|%^&asdf|34|'":|"
| { tr -d '[[:alnum:]]'; printf "n"; }
| sed 's/(.)/1_/g'
| awk -v 'RS=_' '{print $0}'
| sort -u
| awk '{printf $0}END{printf "n"}'
输出
!"%&',:^||
您可以用cat fileName
替换第一行echo ....