Awk удалить строку, содержащую данные
Я хочу удалить строку, если она содержит указанное значение.
2 5 8
1 3 7
8 5 9
поэтому, если я хочу удалить строку, содержащую 7 в качестве третьего поля:
{
if( == 7){
####delete the line
}
}
3 ответов
достаточно сказать
$ awk ' != 7'
обратите внимание, что это числовое сравнение, и опущу строки, в которых третье поле, например, "0.7e1", но оно будет работать для данных по образца вы обеспечиваете.
другие ответы. Вот почему
стандартная модель обработки Awk-считывание строки ввода, необязательно совпадающей с этой строкой, и при совпадении (необязательно) печать ввода. Другие решения используют совпадение отрицания, поэтому строки печатаются если матч сделан.
в вашем примере кода не используется совпадение отрицания: он говорит:"если что-то верно, сделайте это". Поскольку вы хотите удалить входные данные, когда вы соответствуете этой цели, вы можете просто пропустить печать он.
{
if( == 7){
#skip printing this line
next
}
}
IHTH.