sed
は、シェルの外部のバイナリユーティリティです。
$ which sed
/usr/bin/sed
あなたの規定の目標は、特殊文字がセットになっていないこといずれかであるsed
および/またはgrep
を使用して、テキストファイルから「特別な」文字の全てを取得することであると、それがどこにあるかを確認することができますaz、AZ、または0-9です。 sed
を使用することが最も簡単な方法です:
$ sed -e 's/[a-zA-Z0-9]//g' file
これは効果的にファイルからそれらを削除し、空の文字で、すべての非特殊文字を置き換えます。grep
については
$ sed -e 's/[a-zA-Z0-9]//g' /etc/passwd
:::::/://
:::::/://
:::::/://
::::://://
:::::///://
:::::/://
:::::/://
:::::/://
:::::///://
:::::/://
::::://://
:::: ://://
:::::/://
:::::///://
-:::: :/://
-:::: :/://
-:::: :/://
--:::: :/://
あなたは出力に一致する値を-o
オプションを使用することができます:入力、出力、これに似た何かをされますよう/etc/passwd
を用いて、実施例
、しかし、それぞれのマッチングを同様の出力を生成します
$ grep -o '[^a-zA-Z0-9]' /etc/passwd
新しい行に文字が表示されます。
別のオプションがtr
です:前sed
コマンドと同じ出力を生成します
$ tr -d '[:alnum:]' </etc/passwd
。あなたは、このようなコマンドの標準出力をキャプチャすることができ、すべての3例で
:
$ specials=$(tr -d '[:alnum:]' </etc/passwd)
$ echo $specials
:::::/:// :::::/:// :::::/:// ::::://:// :::::///:// :::::/:// :::::/:// :::::/:// :::::///:// :::::/:// ::::://:// :::: ://:// :::::/:// :::::///:// -:::: :/:// -:::: :/:// -:::: :/:// --:::: :/:// :::: :/:// :::: :/:// :::: :///:// :::: :///:// ::::://:// :::: ://:// :::::/:// :::: :///:// :::::///:// :::: /- :///-:// :::::///:// :::: :///:// :::: :/:// :::::///:// ::::://:// -:::: :/:// :::: :/:// :::: ://:// :::: :/:// :::: :///:// :::: :///:// --::::://--/:// -:::: :/:// ::::- :///:// :::: ://:// :::::/:// ::::://:// ::::://:// :::: ://:// :::: :///:// :::: :///:// :::: :///://
引用符をバック使っても動作します:
$ specials=`tr -d '[:alnum:]' </etc/passwd`
引用はhttp、より詳細に説明されています。 //stackoverflow.com/questions/10067266/when-to-wrap-quotes-around-a-variable – tripleee