Text-Processing
搜尋特殊字元和字元空間
您好,我目前正在使用 csv 文件。
我想找到一個 bash 命令來幫助我找到特殊字元
?, !, #, *, %
以及字元空間,例如
' '
任何建議都會有所幫助,我正在考慮使用 grep 函式,但不太確定這將如何應用於上述規範。
試試這個,把你想在括號表達式
[...]
中找到的字元括起來。grep '[?!#*% ]' infile
有一些例外情況,例如:
- if
^
character:它可以放在第一個字元中的任何位置,[]
但不能放在第一個字元中,因為^
字元首先否定其括號表達式中的字元。- if
]
字元:它應該是第一個字元,因為這個字元也用於結束括號表達式。- if
-
字元:它應該是第一個或最後一個字元,因為這個字元也可以用來定義字元的範圍。取決於您想要對找到的字元執行的需要:
- 僅列印那些字元(如果存在)
grep -o '[?!#*% ]' infile
- 刪除這些字元:
tr -d '[?!#*% ]' < infile ##or sed 's/[?!#*% ]//g' infile ##or awk '{ gsub(/[?!#*% ]/, "") }1' infile
- 用一個空格替換它們:
tr '[?!#*% ]' ' ' < infile ##or sed 's/[?!#*% ]/ /g' infile ##or awk '{ gsub(/[?!#*% ]/, " ") }1' infile
- 替換為其他字元串:
sed 's/[?!#*% ]/someString/g' infile ##or awk '{ gsub(/[?!#*% ]/, "someString") }1' infile
- 列印至少其中一個出現在一行中的整行:
grep --color=none '[?!#*% ]' infile ##or sed '/[?!#*% ]/!d' infile ##or awk '/[?!#*% ]/' infile
- 等等