удалить строки в текстовом файле на основе шаблона - PullRequest
0 голосов
/ 16 сентября 2018

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

    value1 has output a123
    a123 has output 90
    a123 has output 5000
    a123 has output 400
    value2 has output 100
    value3 has output a133
    a133 has output 50
    a133 has output 90
    value4 has output a223
    a223 has output 100

Я хочу удалить строки, которые повторяются дважды (строки, которые появляются в последнем слове предыдущей строки), например -

 a123 has output 90
 a123 has output 5000
 a123 has output 400
 a133 has output 50
 a133 has output 90
 a223 has output 100

и сохранил это -

value1 has output a123
value2 has output 100
value3 has output a133 
value4 has output a223

Ответы [ 3 ]

0 голосов
/ 16 сентября 2018

Учитывая, что вы хотите получить значение из строки, которая начинается со строки value, то следующее также может вам помочь.

awk '/^value/{value=$NF} $1!=value'  Input_file
0 голосов
/ 16 сентября 2018

Это может сработать для вас (GNU sed):

sed -r ':a;N;s/((\S+)\s*)\n\s*\2\s.*/\1/;ta;P;D' file

Сравните следующую строку с предыдущей и, если последнее слово следующей строки совпадает с последним словом предыдущего, удалите следующую строку и повторите.

0 голосов
/ 16 сентября 2018

Следующая команда awk сделает:

awk '$1!=l{print;l=$NF}' your_text_file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...