4

SO と他の場所の両方でよくある質問は、bash の for ループを使用して出力の各行を調べる方法です。私は答えを認識しており、何年もの間、以下を喜んで使用しています。

IFS=$'\n'

ただし、使用されている構文には少し困惑しています。私は良い検索/Googleを持っていましたが、上記の検索エンジンによって使用/無視される記号の数が非常に多いため、説明が見つかりませんでした.

また、最近、別のスクリプトからの出力でこれを発見しました。netcat からの結果のエコーに問題がありました。詳しく調べると、nc からの出力が同様の形式であることがわかります。

$'Some_Output_Here\r`

最終的に を切り落とす必要がありました\rが、最善の方法がわからず、 を使用することになりましたegrep -o ([0-9|a-Z]*)。より良いアイデアはありますか?

4

2 に答える 2

2

Bash のマニュアルでは、ANSI-C Quotingと呼ばれるこの引用方法について説明しています。

于 2012-09-10T08:18:20.720 に答える
1

マイケルが元の投稿を編集した後、私はそれがより理にかなっていると思います.

投稿した人は改行の削除を調べる必要があると思います。これで十分なはずです

sed -e 's/^M//g'

コントロールの印刷不可能な文字を削除するには、他にも多くの方法があります。

すべての制御文字:

egrep -v "[[:cntrl:]]"
sed -r "s/[[:cntrl:]]//g"

印刷できない文字

tr -dc '[:print:]'
于 2012-09-10T22:42:44.370 に答える