私は次のようなものを持っています
dsadjakldjska
safdsfdsfsf
fdsfsf**STGN**fdsfsd
fdsfkjldsf
fdsff
fdsfs**IRV**fdsfs
欲しい
dsadjakldjska
safdsfdsfsf
fdsfkjldsf
fdsff
fdsfsf**STGN**fdsfsd
fdsfs**IRV**fdsfs
ただし、行間隔(ファイルの末尾までの行40000)にのみ適用されます(STGNを含む行を次のIRVのすぐ上に移動)。
どうすればこれを行うことができますか?それともsedよりも良い選択肢がありますか?
ベストアンサー1
awk 'NR < 40000 {print; next}
/\*\*STGN\*\*/ {line = $0; next}
/\*\*IRV\*\*/ && line {print line; line=""}
{print}'
そしてsed
:
sed -e '40000,$!b' -e '/\*\*STGN\*\*/{h;d;}' -e '/\*\*IRV\*\*/{x;/./p;s/.*//;x;}'
(彼らはSTGNが発生すると仮定します。今後IRV)。