sed正規表現は隠し文字では機能しません

sed正規表現は隠し文字では機能しません

何らかの理由で、リストの末尾に英数字以外の文字が追加されたリストがあります。

私はこれが簡単な実行ケースだと思いました。

sed 's/[^A-Za-z0-9]$//'

次の文字を置き換えます。残念ながら上記の内容は何の効果もないようです。

たとえば、ファイルの16進ダンプを実行すると、次のような行が表示されます。

63 6f 6d be 0a 

明らかに、犯人は16進文字です。

be

しかし、次のパイプラインを実行すると

.... | sed 's/[^A-Za-z0-9]//' | hexdump -C

私はまだ「be」が出てくるのを見る!

答え1

;を使用して不要な文字をフィルタリングできますtr。あなたの場合

... | tr -d -c '[:print:][:cntrl:]'

-d指定された文字に一致するすべての文字を削除し、-c文字セットを補完し(この場合は一致する文字のみを保持するように)、[:print:]印刷可能なすべての文字(スペースを含む)と一致し、制御文字[:cntrl:](保持するキャリッジリターンなど)と一致します。改行文字)。

関連情報