複数のスペースを1つに置き換えるには 'tr'を使用してください。

複数のスペースを1つに置き換えるには 'tr'を使用してください。

ファイルがありますf1.txt

ID     Name
1      a
2         b
3   g
6            f

スペースの数はいいえ安定した。すべてのスペースを1つのスペースに置き換える最善の方法は何ですかtr

これが私が今まで持っているものです:

cat f1.txt | tr -d " "

ただし、出力は次のようになります。

IDName
1a
2b
3g
6f

しかし、私は次のように見えたいです。

ID Name
1 a
2 b
3 g
6 f

それを避けてくださいsed

ベストアンサー1

とともにtr、使用するs押出繰り返しオプション:

$ tr -s " " < file
ID Name
1 a
2 b
3 g
6 f

または、次のソリューションを使用できますawk

$ awk '{$2=$2};1' file
ID Name
1 a
2 b
3 g
6 f

レコードのフィールドを変更すると、書き換えはawkすべて$0のフィールドを取得し、デフォルトでスペースOFSで区切って一緒にリンクします。

これにより、一連のスペースとタブ(ロケールと実装によって異なるスペース文字も可能ですawk)を単一のスペースに圧縮し、各行から先行スペースと末尾スペースを削除します。

おすすめ記事