私は文字列操作のチュートリアルをたくさん見つけましたが、特定の状況に適用する方法がわかりません。文字列変数を挿入(交換ではない)する必要があります。言葉テキスト変数としてテキスト2つの方法のいずれかを使用してください(行番号付けには依存せず、ファイルの読み取り/書き込みよりも変数操作が好ましい)。
- 一致する文字列の前または
特定のインデックス(バイト位置)で
text="mytextMATCHmytext" word="WORD" match="MATCH" # method1 - not working, because text is not a file sed '/$word/ i $match' text # method2 indx="${text%%$match*}" indx=${indx%:*} # leave only the byte index where match starts text="$text{0-$index-1}$word$text{$index-end}" # expected value of text: "mytextWORDMATCHmytext"
構文を理解するのに役立ちます。両方の方法を修正できれば良いと思います。別の方法がありますか?これテキスト1MB以上のテキストが含まれているので、効率的な方法が好まれます。
ベストアンサー1
j
変数にテキストを挿入するtext
場所p
(0から計算):
p=5
text="$(seq 10)" ## arbitrary text
text="${text:0:p}j${text:p}"
j
一致する部分の前にテキストを挿入するには、次の手順を実行します$match
。
text="${text%%${match}*}j${match}${text##*${match}}"
$text
これは、前の部分が見つかるまで引き抜き、$match
追加j
、追加、および後続の部分が見つかるまで追加します$match
。ゲームが1つだけあってほしい!$text
$match
$match
$text