このコマンドを実行して、ファイル内の特殊文字を除く文字列を検索するより良い方法はありますか?


1

このコマンドを実行して、ファイル内の特殊文字を除く文字列を検索するより良い方法はありますか?

現在私がやっている:

strings file.abc | grep -v \= | grep -v \] | grep -v \) | more

結果にazとAZしか表示されないように、さらに特殊文字を追加したいと思います。

回答:


3

これらの特殊文字を除外したい場合は、正規表現を使用できます(たとえば、次のようなPCRE

strings file.abc | grep -Pv "[=\])]"

特定の文字を含む文字列のみを表示する場合は、文字列の代わりに grep 使用できます。

コマンド

grep -Poa "[A-Za-z]{4,}" file.abc

少なくとも4文字のすべての単語を表示します。

ここに:

  • -oスイッチはgrepのショーのみ一致(全体ではなくライン)を作ります。
  • この-aスイッチは、バイナリファイルをテキストファイルとして強制的に処理します。
  • PCREは[A-Za-z]{4,}4つ以上の連続した文字に一致します。

    4は、文字列が使用するデフォルトの番号です。必要に応じて調整します。


1

どう?

strings file.abc | grep '^[A-Za-z]*$'

これにより、文字のみで構成される行のみが表示されます。

実際には、おそらく1つ以上の文字シーケンスのみを含む行が必要です。すなわち、文字とスペースを含む行。それが望むなら

strings file.abc | grep '^[A-Za-z ]*$'

の後にスペースを入れますz。他の文字を含めたい場合は、括弧内に入れてください。(警告:引用文字自体、、'および右括弧]。など、一部の文字は扱いにくいものになります。)

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.