Text-Processing

搜尋特殊字元和字元空間

  • May 4, 2021

您好,我目前正在使用 csv 文件。

我想找到一個 bash 命令來幫助我找到特殊字元

?, !, #, *, %

以及字元空間,例如

' '

任何建議都會有所幫助,我正在考慮使用 grep 函式,但不太確定這將如何應用於上述規範。

試試這個,把你想在括號表達式[...]中找到的字元括起來。

grep '[?!#*% ]' infile

有一些例外情況,例如:

  • if ^character:它可以放在第一個字元中的任何位置,[]但不能放在第一個字元中,因為^字元首先否定其括號表達式中的字元。
  • if]字元:它應該是第一個字元,因為這個字元也用於結束括號表達式。
  • if-字元:它應該是第一個或最後一個字元,因為這個字元也可以用來定義字元的範圍。

取決於您想要對找到的字元執行的需要:

  1. 僅列印那些字元(如果存在)
grep -o '[?!#*% ]' infile
  1. 刪除這些字元:
tr -d '[?!#*% ]' < infile              ##or
sed 's/[?!#*% ]//g' infile             ##or
awk '{ gsub(/[?!#*% ]/, "") }1' infile
  1. 用一個空格替換它們:
tr '[?!#*% ]' ' ' < infile             ##or
sed 's/[?!#*% ]/ /g' infile            ##or
awk '{ gsub(/[?!#*% ]/, " ") }1' infile
  1. 替換為其他字元串:
sed 's/[?!#*% ]/someString/g' infile   ##or
awk '{ gsub(/[?!#*% ]/, "someString") }1' infile
  1. 列印至少其中一個出現在一行中的整行:
grep --color=none '[?!#*% ]' infile    ##or
sed '/[?!#*% ]/!d' infile              ##or
awk '/[?!#*% ]/' infile
  1. 等等

引用自:https://unix.stackexchange.com/questions/647999