我有一個文件,其中包含由'|'分隔的約30000個記錄。我只需要從文件中獲得特殊字符的清單。如何從使用GREP或SED的文件中獲取不同的特殊字符列表?
例如: 123 | fasdf |%df & | pap,來了! 234 |%^ & ASDF | 34 | '「:|
我的輸出應該是: |%&,^!'」:
任何幫助將不勝感激。感謝, Velraj。
我有一個文件,其中包含由'|'分隔的約30000個記錄。我只需要從文件中獲得特殊字符的清單。如何從使用GREP或SED的文件中獲取不同的特殊字符列表?
例如: 123 | fasdf |%df & | pap,來了! 234 |%^ & ASDF | 34 | '「:|
我的輸出應該是: |%&,^!'」:
任何幫助將不勝感激。感謝, Velraj。
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-9,a-z和A-Z以外的所有字符。 – user1231034 2012-02-24 15:22:11
更新了我的答案 – 2012-02-24 15:25:48
非常感謝。它真的工作.. :) – user1231034 2012-02-24 15:36:47
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
你的輸出並不明顯(兩個垂直條),但OT想讓它與衆不同。 – 2012-02-24 15:28:43
@dying_sphynx:我一直忘記'END'中的'print'會打印最後一個$ 0。我已經解決了我的解決方案,感謝您的反饋和祝您好運。 – shellter 2012-02-25 21:35:50
什麼是你定義「特殊」字符? – ArjunShankar 2012-02-24 15:17:29