-1

ファイル内で複数行のパターンを見つけて、その後に 2 行追加するか、置換しようとしています。

これは、入力と出力がどのように見えるかです。

入力

$ DATE: Fri Apr 20 16:36:56 2012
$---------------------------$
$ FILE MANAGEMENT SECTION   $
$---------------------------$
$
$---------------------------$
$ EXECUTIVE CONTROL SECTION $
$---------------------------$

出力

$ DATE: Fri Apr 20 16:36:56 2012
$---------------------------$
$ FILE MANAGEMENT SECTION   $
$---------------------------$
$
BLKABLA
$
$---------------------------$
$ EXECUTIVE CONTROL SECTION $
$---------------------------$

ありがとう

4

4 に答える 4

1
awk '1;/^\$$/{print "BLKABLA\n$"}' file

パターンが初めて見られたときにそれを行う 1 つの方法:

awk '1;/^\$$/ && !done{print "BLKABLA\n$"; done=1}' file
于 2013-01-11T13:28:47.190 に答える
0

保持バッファーを使用して、最初にファイル全体を読み取ってから、ファイル全体に正規表現を適用することもできます。ここですでに解決策を説明しました-後方参照を使用した複数行のsed

于 2013-01-11T09:26:01.480 に答える
0

これは Linux なので、おそらく GNU sed を使用しています。試す:

sed -e '/^\$ FILE MANAGEMENT SECTION   \$$/,+2{/^\$-\+\$/,+1{/^\$$/afoo\
$
}
}' input

3つの正規表現に一致します

^\$ FILE MANAGEMENT SECTION   \$$
^\$-\+\$$
^\$$

次に追加します

foo
$
于 2013-01-11T06:51:47.503 に答える
0

これはうまくいくかもしれません(GNU sed):

sed '/^$ FILE MANAGEMENT SECTION   $$/!b;n;/^$--*$$/a$\nBLKABLA' file

また

sed '/^$ FILE MANAGEMENT SECTION   $$/!b;n;$!N;/^$--*$\n$$/aBLKABLA\n$' file
于 2013-01-11T11:32:25.080 に答える