Предполагая, что ваш файл данных является на самом деле многостолбцовым, и что значения находятся в столбце 4, будет работать следующее:
awk '$4 != "-" {print $4} {}'
Печатает значение только там, где оно не "-". Ваша версия, вероятно, напечатает значение независимо (или дважды), поскольку действие по умолчанию - печать. Добавление {}
делает действие по умолчанию "ничего не делать".
Если данные на самом деле такие, как показано (только один столбец), вы должны использовать $1
, а не $4
- я бы не стал использовать $0
, так как это целая строка и кажется, что у вас есть пробелы конец первых двух строк, из-за которых $0
будет "-1033 "
и "- "
.
Но если бы это был один столбец, я бы вообще не использовал awk, а скорее:
grep -v '^-$'
grep -v '^ *- *$'
второй, допускающий пробелы по обе стороны от символа "-"
.