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