一致する文字列からn行目を削除します(ファイル内で一度だけ発生します)。

一致する文字列からn行目を削除します(ファイル内で一度だけ発生します)。

複数のファイルで使用されているn+2場所から一致文字列の後に表示される文字列を削除することに関連する問題があります。以下を使用して印刷できます。nawk

 awk -F '/radius-server/{nr[NR+4]}; NR in nr' *

一致する文字列がどこにあるかradius-serverわかりません。 awk誰か助けてくれてありがとう。この行を所定の位置から削除してください。これは、削除が完了した後にファイルを変更して保存したいという意味です。以下は、file 1変更されていない例のシナリオです。

 radius-server dz7HQQH4EqT5 1645-1646
 !
 oj5icqh1dGpSK
 !  
 alias exec t telnet
 alias exec sis show interface status
 !

file 2、修正済み——

radius-server dz7HQQH4EqT5 1645-1646
!
!
alias exec t telnet
alias exec sis show interface status
!

パターンマッチング方法を使用して削除できることはわかっていますが、sed -i '/pattern/d'値がファイルごとに変更されるため、これは私が望むものではありません。どんな助けでも大変感謝します。

ベストアンサー1

sedが適切なツールのようです。

sed -i '/radius-server/!b;n;n;d' filename

仕組み:

/radius-server/!b # as long as it's NOT 'radius-server' do nothing (branch to end)
n # read next line (replace current line with next line)
n # same as above - we now read 2 lines
d # delete the current line

更新 - 複数のファイルを変更するには、ファイル名の代わりにglobを使用してください。例:

sed -i '/radius-server/!b;n;n;d' *

おすすめ記事