以下のテキストファイルがあります。
データ.txt
12345678909876456 qwerty
1234567890987 qwerty
23456789011234567 qwerty
私はそれを次のように見せたい。
- 11番から20番を置き換えることになる。
- その位置間のすべてのスペースは「0」に置き換えられます。
- 1234で始まる行の置き換えのみを考慮する必要があります。
これまで文字列をトークン化できますが、スペースを正しく置き換えることはできません。
sed 's/^1234\(.\{6\}\)\(.\{10\}\)\(.*\)/1234\1Hi\3/' data.txt
それが私に与える結果は次のとおりです。
1234567890Hi qwerty
1234567890Hiqwerty
23456789011234567 qwerty
ベストアンサー1
ほぼすべてが来ました...正規表現を少し変更し、文字列の位置11〜20がもはやSpaceではなくなるまでdo-whileループにs / / /をラップします。
sed -e '
:loop
s/^\(1234.\{6\}[0-9]\{0,9\}\) /\10/
t loop
' file
12345678909876456000qwerty
12345678909870000000qwerty
23456789011234567 qwerty