回答:
溶液はこれらに限定されていない場合sed
は、awk
以下のonelinerとあなたの友人は、次のとおりです。
awk 'BEGIN{file="NewText.txt";}{if(/SOMETEX/) count++; if(count==2){while((getline<file)>0) {print};count++;} else print;}' OldText.txt > new.txt
それが何をする:
awk 'BEGIN{file="NewText.txt";} #sets the path to the
file that will be inserted
{if(/SOMETEX/) count++; #counts occurences of SOMETEX (regex-matching)
if(count==2) #if we just found the second occurence then
{while((getline<file)>0) {print};count++;} #read all lines of
file and print them
else print; #otherwise just print the line
}'
これを行うには多くの方法があります。
おそらく最も簡単なのは、改行を別の文字に置き換えて(このコンテキストではかなり無害なのでcap ^を使用)、n番目の出現を検索して置換することにより、初期ファイルを単一の(非常に長い文字列)に変換することです文字列を検索してから、改行を元の場所に戻します。
これは、単一のコマンドで実行できます。
tr '\n' '^' < my_file | sed 's/Sometexts/ r newtext.txt/2' | tr '^' '\n' > new.txt
awkまたはsedを使用して1行で実行することもできますが、すぐに面倒になります。
編集:^を使用するのが怖い場合は、この単一のsedコマンドを使用できます。
sed ':a;N;$!ba;s/Sometexts/ r newtext.txt/2' file
my_file
独自の '^'が含まれている場合、これは追加の改行でファイルをマングルします...