私のLinuxコンピュータにファイルがあります。
1234 | 456 |"abc | xyz"| fid|
|
その間にあるwhichをカンマに変更したいと思います。" "
abcとxyzの間にはパイプのみがあります。この行は同様の行を含むファイルの一部ですが、「」の中には1つしかありません。誰でも助けることができますか?
答え1
echo '1234 | 456 |"abc | xyz"| fid|' | \
sed 's/\([^|]*|[^|]*|[^|]*\)|/\1,/'
これを作ります。
1234 | 456 |"abc , xyz"| fid|
このsedラインは、パイプ以外のもの、パイプ、パイプ以外のもの、パイプ、パイプ以外のものを見つける方法で動作します。これ逆参照から除外された関心パイプです。すべてを逆参照に変更し、最後のパイプをコンマに置き換えます。残りの行は変更されません。
答え2
私はterdonの問題に対する答えと説明を次のようにしています。
echo '1234 | 456 |"abc | xyz"| fid|' | sed "s:|:,:3"
答え3
|
各行間の引用符を置き換えようとすると、次のように動作します。
sed 's/"\([^"]*\)|\([^"]*\)"/"\1,\2"/' yourfile