a)「Sune」で始まる行の後の最初の「Kalle」行の前に「//VERSION 221204 NEW LINE」行を挿入しようとしています。
b)また、「すべての部分文字列」(単語)を取得し、それを使用して上記のa)に記載されている行のVERSIONを置き換える必要があります。したがって、上記の行は「//221204 NEW LINE」でなければなりません。
編集するファイルの例は次のとおりです。
アン
訪問者
Annika「すべての部分文字列」Anna(注:Annikaはファイル固有です。)
シグ
スネベラ
訪問者
注文する:
sed '/Sune.*/,/Kalle/!b;/Kalle/i // VERSION 221204 NEW LINE' <file>
これが私が得たラインです。これまでとてもよかったです。
アン
訪問者
アニカ・リサ・アンナ
シグ
スネベラ
//バージョン221204新しい行
訪問者
しかし、私が望むのは、Lisa()をインポートしてVERSIONをそれに置き換えることです。したがって、新しい行は次のようになります。 // Lisa 221204 NEW LINE
これはLisaを得るために使用することができます。(<any substring>). | awk '/Annika /{print $(NF-1)}'
しかし、どのように組み合わせるのですか? 「リサ」を最初に獲得し、後で交換できるように何とか保存できますか?
ライナーがあれば大丈夫でしょう。 sed、awkなどのbashやLinuxコマンドが欲しい...
答え1
使用sed
sed -E '{
/Kalle/!{n;b}
:A /Annika/!{n;bA}
:B /Sune/!{N;bB}
/Annika[[:space:]]+([[:alpha:]]+).*/{
s//&\n\n\/\/ \1 221204 NEW LINE/
}
}' file
1本のライン:
sed -E '/Kalle/!{n;b}; :A /Annika/!{n;bA}; :B /Sune/!{N;bB}; /Annika[[:space:]]+([[:alpha:]]+).*/{s//&\n\n\/\/ \1 221204 NEW LINE/}' file