「空白」を絞りたい場合は、trの事前定義文字セット「:blank:」(水平の空白タブとスペース)または「:space:」(垂直空白)を使用します。
/bin/echo -e "val1\t\tval2 val3" | tr -s "[:blank:]"
例はRed Hat 5(GNU tr)で実行されました。
私の場合、すべての空白を単一のスペースに正規化して、スペースを削除者として使用できるようにしました。
dastrobuの2番目のコメントで指摘したように、manページの言葉遣いを見逃しました。
-s uses the last specified SET, and occurs after translation or deletion.
これにより、最初のtrを削除できます。工藤は私の密度に直面して彼の忍耐のためにスコットすることです。
前に、Redis構成からポートを解析します。ファイル:
grep "^port" $redisconf | tr "[:blank:]" " " | tr -s "[:blank:]" | cut -d" " -f2
その後、squeezeでSET2が指定されます:
grep "^port" $redisconf | tr -s "[:blank:]" " " | cut -d" " -f2
出力:
6379
空白のニュアンスをカバーする詳細については
[:blank:]文字クラスに属する連続した混合文字が関係する場合、squeezeだけが失敗することを示します。
/usr/bin/printf '%s \t %s' id myname | tr -s "[:blank:]" | od -cb
0000000 i d \t m y n a m e
151 144 040 011 040 155 171 156 141 155 145
0000013
注:printf形式の2つの文字列フィールドは、スペース1つ、タブ1つ、スペース1つで区切られています。スクイーズ後、このシーケンスはまだ存在します。Octalダンプの出力では、これはASCIIシーケンス040 011 040で表されます。