入力する:
11 22 33 44,1 2,2
出力
11223344,1 2,2
1
最初のフィールドの前にあるフィールド番号のすべてのスペースを削除したいと思いますcomma
。
答え1
を使用するにはsed
ループが必要です。
sed -e :1 -e 's/^\([^,]*\) /\1/;t1'
または、保存スペースを使用してすべてのスペースを置き換え、そこから行の元の部分を復元することもできます。
sed 'h;s/,.*//;s/ //g;G;s/\n[^,]*//'
次のコマンドを使用すると簡単になりますawk
。
awk -F, -v OFS=, '{gsub(" ", "", $1); print}'
またはperl
:
perl -F, -lpe '$F[0] =~ s/ //g; $_ = join ",", @F'
または:
perl -pe 's{[^,]*}{$& =~ s/ //gr}e'
または:
perl -pe 's/\G[^, ]*\K //g'
最後のものは説明する価値があるでしょう:\G
フラグを伴うことですg
。
フラグはグローバル置換をg
意味し、前の発生から次の発生を検索し続けるg
ループを意味します。perl
\G
前の一致の後の位置、つまり最後に置き換えられた空白の後、ループの最初のパスの行の先頭と一致します。使用時に[^,]
最初のコンマを通過するループは許可されないため、その前のすべてのスペースを置き換えます。