Ответ 1
Поместите следующие условия внутри первого и проверьте их с помощью операторов if
, например:
awk -F, '
/./ {
print "a"$0;
if (NR!=1) { print "b"$0 }
print "c"$0
}
END { print "d"$0 }
' MyFile
/./
удаляет пустые строки только для первого условия { print "a"$0 }
, как бы гарантировать, что script удаляет пустые строки для каждого условия?
awk -F, '/./ { print "a"$0 } NR!=1 { print "b"$0 } { print "c"$0 } END { print "d"$0 }' MyFile
Поместите следующие условия внутри первого и проверьте их с помощью операторов if
, например:
awk -F, '
/./ {
print "a"$0;
if (NR!=1) { print "b"$0 }
print "c"$0
}
END { print "d"$0 }
' MyFile
Команда Awk для удаления пустых строк из файла:
awk 'NF > 0' filename
Более короткая форма уже предлагаемого ответа может быть следующей:
awk NF file
Любой awk
script следует синтаксису condition {statement}
. Если блок оператора отсутствует, awk
будет печатать всю запись (строку), если condition
не равен нулю.
NF
variable in awk
представляет количество полей в строке. Поэтому, когда строка не пуста, NF
удерживает положительное значение, которое запускает действие по умолчанию awk
(печатает всю строку). В случае пустой строки NF
равен нулю, и условие не выполняется, поэтому awk
ничего не делает.
или
awk '!/^$/' file
^$
является регулярным выражением для пустой строки. 2 /
необходим, чтобы awk
понять, что строка является регулярным выражением. !
является стандартным отрицанием.
если вы хотите игнорировать все пустые строки, поместите это в начало script
/^$/ {next}