ファイル操作は、テキストファイルの各行に12、44、60文字ごとに「;」を挿入します。

ファイル操作は、テキストファイルの各行に12、44、60文字ごとに「;」を挿入します。

区切り文字なしでデータを含むテキストファイルからcsvファイルを作成する必要があります。

良い:

2015021DUMMY001EAN1377689456777678945GERDE0002345
2015031DUMMY002EAN1345647876867867867TURTR0154565
......

bashまたはsedを使用して各行のすべてのx、y、およびz文字にセミコロンを挿入する簡単な方法はありますか?

ベストアンサー1

12文字、32文字、16文字のグループを使用できます(12+32=44、44+16=60)。

sed 's/\(.\{12\}\)\(.\{32\}\)\(.\{16\}\)/\1;\2;\3/'

あなたのサンプル入力には60文字が含まれていません(正しく計算すると49文字)。それ以外の場合は、12と32のみが使用されます。

$ sed 's/\(.\{12\}\)\(.\{32\}\)/\1;\2;/' input
2015021DUMMY;001EAN1377689456777678945GERDE00;02345
2015031DUMMY;002EAN1345647876867867867TURTR01;54565

...あなたが望むものかもしれないし、そうでないかもしれません。

通常、グループの長さはx、yx、およびzyx文字です。

または、3つの別々の代替品を使用できます。

sed 's/.\{12\}/&;/; s/.\{45\}/&;/; s/.\{62\}/&;/'

この場合、長さはx、y + 1(xに挿入されたセミコロン)、およびz + 2になります。

おすすめ記事