Я изменил или (|| )добавить (&& )и все заработало.
cat rtpServiceStatusrun | awk '/Processname\s*Node\s*Status\s*QueueAv/{
while (getline){
if( $0 !~ /^====*/ && $0 !~ /^ENDTIME*/ ){
print $0
}
}
}'
Вы получили правильный инструмент для работы, cut
, но делаете ее намного сложнее, чем нужно. Здесь нет абсолютно никакой причины использовать цикл bash, который только замедляет работу и усложняет ее. cut
будет обрабатывать каждую строку в файле отдельно. Однако разделителем по умолчанию для cut
является табуляция, а не пробел, поэтому вам нужно указать, чтобы он вырезал пробелы, используя флаг -d
. Затем, вместо того, чтобы указывать ему вырезать определенные символы, просто скажите ему напечатать первое поле с-f 1
:
$ cut -d' ' -f 1 file
appset.org
bbchannel.eu
cyberset.it
cybersetsystems.com
romelidays.com
novaprospect.eu
С помощью sed
вы попытаетесь удалить все после первого пробела:
$ sed 's/.*//' file
appset.org
bbchannel.eu
cyberset.it
cybersetsystems.com
romelidays.com
novaprospect.eu
Или вы можете использовать awk
, который по умолчанию разбивается на поля по пробелам:
$ awk '{print $1}' file
appset.org
bbchannel.eu
cyberset.it
cybersetsystems.com
romelidays.com
novaprospect.eu
Или перл:
$ perl -pe 's/\s.*//' file
appset.org
bbchannel.eu
cyberset.it
cybersetsystems.com
romelidays.com
novaprospect.eu
Или снова перл:
$ perl -lane 'print $F[0]' file
appset.org
bbchannel.eu
cyberset.it
cybersetsystems.com
romelidays.com
novaprospect.eu
Вы могли бы сделать это даже в оболочке, но это будет намного медленнее для больших файлов и как правило, это не очень хорошая идея:
$ while read want rest; do echo "$want"; done < file
appset.org
bbchannel.eu
cyberset.it
cybersetsystems.com
romelidays.com
novaprospect.eu
Или, безопаснее для произвольного ввода:
$ while read -r want rest; do printf '%s\n' "$want"; done < file
appset.org
bbchannel.eu
cyberset.it
cybersetsystems.com
romelidays.com
novaprospect.eu