Как заставить awk работать в цикле while

input.txt: /usr/dir1/file1 /usr/dir1/file2 /usr/dir2/file4 /usr/dir3/file5 Script: cat input.txt |while read FILENAME do nawk '{print $1}' ${FILENAME} >> output.txt done Expected output: all column1 values of input files Error: nawk: can't open file This works fine when i run it like this nawk '{print $1}' /usr/dir1/file1 >> output.txt nawk '{print $1}' /usr/dir1/file2 >> output.txt nawk '{print $1}' /usr/dir2/file4 >> output.txt 

Я хочу, чтобы иметь возможность запускать его с помощью цикла while или цикла if, скажем, если $? = 0 (с использованием кода возврата). Есть идеи, как это сделать? Я использую solaris 5.10, KSH.

One Solution collect form web for “Как заставить awk работать в цикле while”

Трубопровод входного файла в команду чтения обычно является рецептом для катастрофы, он может работать в некоторых обстоятельствах, но во многих случаях это не так. Лучше всего выучить более последовательный способ сделать это.

Вот несколько простых альтернатив …

 nawk '{print $1}' $( cat input.txt ) > output.txt 

или если вы хотите его в цикле …

 for FILENAME in $( cat input.txt ); do nawk '{ print $1 }' $FILENAME >> output.txt done 

Преимущество этих подходов заключается в том, что вы также легко меняете фразу

 $( cat input.txt ) 

.. к чему-то, что отбросит комментарии, следуя символу #, который даст вам возможность добавлять комментарии к вашим спискам файлов. например

 $( cat input.txt | sed 's/#.*//' ) 

ПРИМЕЧАНИЕ . Если вам нужно обслуживать пути к файлам, которые содержат пробелы или вкладки, вам, вероятно, нужно будет пропустить bash и использовать менее язык для написания текста / токена, например, perl, python и т. Д.

  • Копирование только различий?
  • Чтение и запись ZFS отображаются в выводе vmstat -p
  • Эмуляция Sun UltraSparc IIIi Solaris 5.10
  • Изменение пути перенаправления при запуске скрипта
  • Ошибка при запуске сервера vnc
  • Использование SSH для подключения к новому серверу без сохранения ключей хоста в файле $ HOME / .ssh / known_host
  • Добавить поддержку Solaris для utf-8 для Postgresql
  • Глобальная переменная для каждого скрипта
  • В чем опасность установки максимального предела максимальным дескрипторам файлов для каждого процесса?
  • Как проследить процесс для оригинального пользователя?
  • Есть ли способ проверить df -k, зависающую для проблем монтирования nfs?
  • Linux и Unix - лучшая ОС в мире.