何らかの理由で、リストの末尾に英数字以外の文字が追加されたリストがあります。
私はこれが簡単な実行ケースだと思いました。
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:]
(保持するキャリッジリターンなど)と一致します。改行文字)。