,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]単純に入力が返されます。
私は困惑しています。誰でもこれについて助けやアドバイスを提供できますか?