Вы могли просто использовать f
ключ для корректировки отображенных столбцов. Удалите некоторые столбцы и добавьте % ЦП. Необходимо смочь видеть его затем.
sed встраивают ответ:
find ./files -mtime +90|sed '1s/^/Files stuck in queue:\n/'
Так как другие методы на самом деле не обеспечивают a bash
метод, относительно как попросили:
command | while IFS= read -r line; do
(( i )) || { printf '%s\n' 'These are the files stuck in the queue:' ; (( i++ )) ; }
printf '%s\n' "${line}"
done
Все используемые команды являются внутренними к bash
.
Если не будет никаких строк вывода, то ничто не будет распечатано. Если будет, то строка заголовка будет распечатана, и затем вывод от command
.
Когда я нахожу, что хочу сохранить состояние при обработке входного потока, я нахожу, что awk часто является лучшим инструментом для использования.
В этом случае Вы хотите обработать поток, и если Вы видите некоторый вход, выписываете заголовок и запись, что Вы записали заголовок.
awk '!input_seen { print "header"; input_seen = 1 } 1'
Это распечатает заголовок если переменная input_seen
ложь (который она принимает значение по умолчанию к тому, если неопределенный), и устанавливает его на значение истинности (1). 1
в конце другое правило, которое является кратким способом сказать: распечатайте текущую строку - Вы могли также заменить 1
с { print }
.
sed
версия.
– silvein
09.03.2012, 04:13
Или,
output=$(command)
[[ -n $output ]] && { echo "header"; echo "$output"; }
awk
ответ можно настроить к тому, чтобы быть только 8 символами дольше, чем sed (выше):awk 'NR==1{print "header"}1'
... но еще короче, чем вышеупомянутый, 5 символами:sed "1i header"
– Peter.O 09.03.2012, 05:50