some name;another thing; random; value value value value value
sedを使用した後に表示されるスペースを変更しようとしていますrandom;
。some name
たとえば、その中にスペースを保存することが重要です。
これにより、すべてのスペースがコンマで置き換えられます。*;*;*;
sedなどの式を残りの行に使用し、スペースをコンマで置き換えるにはどうすればよいですか?
sed -e 's/ /,/g'
ありがとう
ベストアンサー1
最後に区切られたフィールドにinを使用してくださいgsub()
。awk
;
$ awk -F ';' 'BEGIN { OFS=FS } { gsub(" ", ",", $NF); print }' file
some name;another thing; random;,value,value,value,value,value
最後のスペース以降のすべてのスペースをコンマで置き換えsed
たいとし、使用してください。;
$ sed 'h;s/.*;//;y/ /,/;x;s/;[^;]*$//;G;s/\n/;/' file
some name;another thing; random;,value,value,value,value,value
注釈付きsed
スクリプト:
h ; # Duplicate line into hold space
s/.*;// ; # Delete up to the last ;
y/ /,/ ; # Change space to comma in remaining data
x ; # Swap pattern and hold spaces
s/;[^;]*$// ; # Delete from the last ;
G ; # Append hold space delimited by newline
s/\n/;/ ; # Replace the embedded newline with ;
; # (implicit print)
「ホールドスペース」は別途提供されるストレージバッファですsed
。 「パターンスペース」は、入力からデータを読み取って修正を適用できるバッファです。