6

私はこれからファイルのテキストを変更しようとしています:

file.txt,c:\path\to\file
file.txt,c:\path with spaces\to\file
file.txt,c:\path\to\file with spaces
file.txt,c:\path\to\file with spaces
file.txt,c:\path\to\file with spaces

この種の出力(ファイルへの1つのパス)へ:

c:\path\to\file\file.txt
c:\path with spaces\to\file\file.txt
c:\path\to\file with spaces\file.txt
c:\path\to\file with spaces\file.txt
c:\path\to\file with spaces\file.txt

このALMOSTは機能しますが、行末に「、」が必要です。

sed 's@\(.*\),\(.*\),\(.*\)@\2,\1,\3@g' file

どんな助けもいただければ幸いです、私はそんなにうまくsedを知りません...

編集

これは私にとってはうまくいきましたが、それでもそこに「\」を追加したいと思います。

sed 's@\(.*\),\(.*\)@\2,\1,\3@g' file
4

1 に答える 1

13

バックスラッシュをエスケープします\\

sed 's/^\(.*\),\(.*\)$/\2\\\1/g' file
                       --^^--

また、必要なキャプチャグループは2つだけです。


しかし、私はもっとawk男なので。

awk -F, '{ print $2 "\\" $1 }' file
于 2012-12-10T20:07:56.590 に答える