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