Сценарий оболочки для удаления самого блока, если в блоке найдена строка - PullRequest
0 голосов
/ 20 января 2020

У меня есть текстовый файл, содержащий данные, как показано ниже.

server {
  listen 50;
  proxy_pass xyz:50;
  hivinu

Итак, я хочу удалить строки верхней и нижней строк, передав строку как xyz: Может кто-нибудь дать мне решение? Я попытался с помощью sed, но я могу удалить только строки ниже одной (l oop). Но я не уверен, как удалить верхние строки, используя sed или awk.

Я попробовал команду sed - ie '/ xyz: /, + 1d', передав строку xyz, чтобы удалить строку ниже в файл. -

Мне нужен вывод, как только я передам строку xyz в файл, он должен удалить полные строки кода и получить пустую строку в файле.

1 Ответ

0 голосов
/ 20 января 2020

Не могли бы вы попробовать следующее, прочитав Input_file 2 раза здесь.

awk '
FNR==NR{
  if($0~/xyz/){
    line_number=FNR
    nextfile
  }
  next
}
FNR<(line_number-2) || FNR>(line_number+1)
'  Input_file  Input_file

Объяснение: Добавление пояснения к приведенному выше коду.

awk '                                          ##Starting awk code from here.
FNR==NR{                                       ##Checking condition FNR==NR which will be TRUE for first time Input_file is being read.
  if($0~/xyz/){                                ##Checking condition if a line contains string xyz then do following.
    line_number=FNR                            ##Assigning current line number to variable line_number here.
    nextfile                                   ##nextfile will STOP reading Input_file first time(GNU awk special).
  }
  next                                         ##next will skip all further statements from here.
}                                              ##Closing BLOCK for first time Input_file.
FNR<(line_number-1) || FNR>(line_number+1)     ##Cheking condition if current line number is lesser than line_number-1 AND greater than line_number+1 then print current line.
'  Input_file  Input_file                      ##Mentioning Input_file name here.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...