web-dev-qa-db-ja.com

特定の位置にsed挿入文字

何百もの*.txt一般的な形式のファイル。

1つのファイルの特定の位置にコンマを挿入できます。以下のコードを一般化して、すべての*.txtfiles in the directory?

sed -i 's/^\(.\{4\}\)/\1,/' blank.txt

たとえば、位置4、8、22などにコンマを挿入します。

おそらくこのような何か?

for i in *.txt; do
   sed -i 's/^\(.\{4\}\)/\1,/' $i
done
6
danny_C_O_T_W

一番右から始めます:

sed -i 's/./&,/22;s/./&,/8;s/./&,/4' ./*.txt

それ以外の場合、最初の置換は2番目の置換に影響します。ただし、いつでも説明できます。

sed -i 's/./&,/4;s/./&,/9;s/./&,/24' ./*.txt
8

一般の方法では、次のようにすることができます:

sed 's/./&,/4' <in >out

これにより、出力時に、少なくともその数の文字を含むすべての入力行の4番目の文字にコンマが追加されます。

そして、もしあなたが私のアドバイスを取るなら、あなたは一般的にnot-i提供するsedに切り替えます。

7
mikeserv