前の投稿を見ようとしましたが、回答が得られませんでした。よろしくお願いします!同じパターンを持ついくつかのファイルindisei行があり、特定の文字列の後に次の[mau]のいずれかを「A」に置き換えたいと思います。 n=22 string="abnt7777/knowthis" charchange "m"
abnt7777/わかりませんがわからない CAHRACTERSmRESTOFSTRING
私が知っているのは、最初の文字列「abnt7777 / knowthis」だけであり、「abnt7777 / knowthis」とaの間に何文字があるかを知っています。変更後の文字数は22です。
abnt7777/knowthis不明CAHRACTERSARESTOFSTRING
答え1
echo "abnt7777/knowthisDONTKNOWWICHCAHRACTERSmRESTOFSTRING" | sed 's#\(abnt7777/knowthis.\{22\}\)m#\1A#'
印刷
abnt7777/knowthisDONTKNOWWICHCAHRACTERSARESTOFSTRING
このsed
コマンドはabnt7777/knowthis
後ろに22文字を検索しますm
。を除くすべての文字がm
合計に含まれ、グループ1としてキャプチャされます\(
。\)
一致する文字列はグループ1(\1
)の後に置き換えられますA
。行の他のすべての部分は変更されません。
ファイルの内容内で文字列を置き換えるには、次のようなものを使用します。
sed 's#\(abnt7777/knowthis.\{22\}\)m#\1A#' inputfile > outputfile
注:実際の入力モードが異なる場合は、ここにが含まれていることをabnt7777/knowthis
確認する必要がありますsed
。
答え2
変数拡張の場合、正しく理解すると次のようになります。
foo="abnt7777/knowthisDONTKNOWWICHCAHRACTERSmRESTOFSTRING"
echo ${foo:0:39}A${foo:40}
出力:
abnt7777/knowthis 不明な文字ㅏ残りの文字列 #^ 39 場所(17 abnt7777/knowthis + 22)