スペースをカンマに変更しますが、行全体を変更しないでください。

スペースをカンマに変更しますが、行全体を変更しないでください。
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。 「パターンスペース」は、入力からデータを読み取って修正を適用できるバッファです。

おすすめ記事