2012-02-24 49 views

回答

3
grep -o '[|%&,!^":]' input | sort -u 

你必須列出括號內的所有特殊字符。

這將返回每個獨特的特殊字符在自己的行。如果你真的需要這些字符的字符串,你必須事後除去換行,例如:

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

UPDATE:

如果您需要刪除哪些不是從「A-ZA-Z0的所有字符-9' 設置,那麼您可以使用此一:

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

感謝您的回覆。我不知道我將在文件中獲得的所有特殊字符。我只想打印除0-9,a-z和A-Z以外的所有字符。 – user1231034 2012-02-24 15:22:11

+0

更新了我的答案 – 2012-02-24 15:25:48

+0

非常感謝。它真的工作.. :) – user1231034 2012-02-24 15:36:47

0
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"}' 

輸出

!"%&',:^|| 

可以更換第一線echo ....cat fileName

+0

你的輸出並不明顯(兩個垂直條),但OT想讓它與衆不同。 – 2012-02-24 15:28:43

+0

@dying_sphynx:我一直忘記'END'中的'print'會打印最後一個$ 0。我已經解決了我的解決方案,感謝您的反饋和祝您好運。 – shellter 2012-02-25 21:35:50

相關問題