GNU/Linux >> Linux の 問題 >  >> Linux

bash の文字列からすべての特殊文字と大文字と小文字を削除します

cat yourfile.txt | tr -dc '[:alnum:]\n\r' | tr '[:upper:]' '[:lower:]'

最初の tr 特殊文字を削除します。 d 削除を意味する c 補数 (文字セットを反転) を意味します。つまり、-dc 指定された文字以外のすべての文字を削除することを意味します。 \n および \r Linux または Windows スタイルの改行を保持するために含まれています。

2 つ目は、大文字を小文字に変換します。


純粋な BASH 4+ ソリューション:

$ filename='Some_randoM data1-A'
$ f=${filename//[^[:alnum:]]/}
$ echo "$f"
SomerandoMdata1A
$ echo "${f,,}"
somerandomdata1a

このための関数:

clean() {
    local a=${1//[^[:alnum:]]/}
    echo "${a,,}"
}

試してみてください:

$ clean "More Data0"
moredata0

mkelement0 と Dan Bliss アプローチを使用している場合。 sed + POSIX 正規表現を調べることもできます。

cat yourfile.txt | sed 's/[^a-zA-Z0-9]//g'

Sed は、文字と数字を除く、括弧内に含まれていない他のすべての文字に一致し、それらを削除します。


tr を使用しました [:print:] の一部ではない文字を削除するには クラス

cat file.txt | tr -dc '[:print:]'

または

echo "..." | tr -dc '[:print:]'

さらに、あなたは | したいかもしれません (パイプ) od -c への出力 結果を確認する

cat file.txt | tr -dc '[:print:]' | od -c

Linux
  1. フォルダから最も古いファイルを削除するためのBashスクリプト?

  2. アプリケーション ディレクトリからすべての .svn ディレクトリを削除する方法

  3. Linux bash、ダッシュで区切るキャメルケース文字列

  1. Bash で文字列に空白以外の文字が含まれているかどうかをテストする

  2. ディレクトリとそのすべてのサブディレクトリ内の文字列を grep する方法は?

  3. bash から変数をエクスポートして Python で使用する

  1. Bash履歴ファイルから特定の行を削除します

  2. bash - すべてのディレクトリ (およびコンテンツ) を削除しますが、pwd 内のファイルは削除しません

  3. フォルダーから最も古いファイルを削除する Bash スクリプト