Как избежать возврата системной команды с помощью awk? - PullRequest
0 голосов
/ 01 мая 2018

Когда я использую awk с system command, как это :

awk 'BEGIN{ if ( system("wc -l file_1") == 0 ) {print "something"} }' text.txt >> file_1

результат system command записан в моем файле file_1 :

0 file_1
something

Как избежать этого? или просто перенаправить вывод?

1 Ответ

0 голосов
/ 01 мая 2018

Похоже, у вас сложилось впечатление, что выходные данные функции system() включают стандартный вывод команды, которую она выполняет. Это не так.

Если вы хотите проверить только наличие файла ненулевого размера, вы можете сделать это с помощью команды test (в системах POSIX):

awk '
  BEGIN{
    if ( system("test -s file_1") ) {     # a return value of 0 is "false" to awk
      print "something"
    }
  }' text.txt >> file_1
...