,
ID のリストを、 and/or\r\n
で構成される区切り文字の使用から の使用に変換する必要があり\n
ます,|
。(基本的に:s/[,\r\n]+/,\|/g
末尾なし|
)
入力データの例:
123,456,789,012
また
123,
456
789,
012
そして、結果の出力を次のようにする必要があり123,|456,|798,|012,
ます。各フィールドを終了するコンマと、それらを区切るパイプです。
これを行うのは非常に簡単に思えますが、これを管理する方法については非常に困惑しています。私は試してみました...実際にはかなりの方法がありますが、何もうまくいかないようです。以下にいくつかの例を示します。
sed "s/[,\r\n]+/,\|/g" < filename
どの区切り文字とも一致しません。sed "s/(,|,?\r?\n?)/,\|/g"
も何も一致しません。tr -t "(,?(\r|\n)+)" ",\|"
そしてtr -t "[,\r\n]+" ",\|"
交換するだけ,
tr "(,|\r?\n)" ",\|"
,
but で正しく動作し、一致した文字を複数のバーに置き換えます,\n
。,\r\n
元:123|||456|||789|||012|
より複雑になる:
sed ':a;N;$!ba;s/\n/,/g"
(ここ\n
から取得) はに正しく置き換えられます,
が、 では機能しません\r\n
。を に置き換えると\n
、[,\r\n]
単純に入力が返されます。
私は困惑しています。誰でもこれについて助けやアドバイスを提供できますか?