問題を説明するために例を見てください。ファイルがあります。
AAA
BBB
CCC
DDD
EEE
FFF
ABAB
ACAC
GGG
HHH
試合後2行移動したいです。アバブ到着前DDD。したがって、変更されたファイルは次のようになります。
AAA
BBB
CCC
ABAB
ACAC
DDD
EEE
FFF
GGG
HHH
これを処理するための素晴らしい方法を探しており、可能な限りsedを使用することをお勧めします。
ベストアンサー1
注:あなたのデータがそうであると仮定します。いいえ各項目の間に空白行がある場合は、4行の問題を解決する必要があります+
。+3
GNUの使用ed
:
$ ed -s file <<EOF
/ABAB/,//+m?DDD?-
,p
q
EOF
どこ
/ABAB/,//+
/ABAB/
一連の行と前の一致の//
1行を処理します。m
指定された行を次に移動します。?DDD?-
前の行と一致し、DDD
1行を減算します。,p
バッファ全体を印刷します。
一行で、
printf '/ABAB/,//+m?DDD?-\n,p\nq\n' | ed -s file
そのfile
場で編集するに,p\nq\n
は,wq\n
勝つ意識とキューそれ)。