Awk удалить строку, содержащую данные

Я хочу удалить строку, если она содержит указанное значение.

2 5 8
1 3 7
8 5 9

поэтому, если я хочу удалить строку, содержащую 7 в качестве третьего поля:

{
if( == 7){
####delete the line
}
}

3 ответов


достаточно сказать

$ awk ' != 7'

обратите внимание, что это числовое сравнение, и опущу строки, в которых третье поле, например, "0.7e1", но оно будет работать для данных по образца вы обеспечиваете.


удалить строку, содержащую 7

awk '!/7/' yourFile

другие ответы. Вот почему

стандартная модель обработки Awk-считывание строки ввода, необязательно совпадающей с этой строкой, и при совпадении (необязательно) печать ввода. Другие решения используют совпадение отрицания, поэтому строки печатаются если матч сделан.

в вашем примере кода не используется совпадение отрицания: он говорит:"если что-то верно, сделайте это". Поскольку вы хотите удалить входные данные, когда вы соответствуете этой цели, вы можете просто пропустить печать он.

{
  if( == 7){
     #skip printing this line
     next
  }
}

IHTH.