Как ввести сумму, полученную из awk в середине вывода текста

Я пытаюсь напечатать сумму в середине строки. Мой скрипт запрашивает имя пользователя, а затем вытаскивает общее количество процессов и общее время для этого пользователя из файла.

Я хочу напечатать предложение с итогами в середине предложения.

Используя awk я могу получить итоговые значения для процессов и минут, но не могу напечатать результаты уравнения в середине предложения. Результат моего уравнения появляется после предложения.

Я чувствую, что мне нужно использовать якорь, как в HTML. Я использую PuTTY.

  oliver|Login|100 smith|Login|20 oliver|Time|25 oliver|Time|25 smith|Time|20 Anne|Login|100 Example: User name? oliver oliver has run 3 processes for a total of 150 minutes case $choice" in 1) echo -n "User name?" read username echo "$username has run processes for a total of minutes" ;; 

Я хотел бы получить общее количество процессов и минут для ввода определенного имени пользователя. Затем вставьте эти числа в предложение, где они принадлежат.

  • Сценарий оболочки, чтобы стать root
  • Рекурсивно найти все файлы с именем «file.txt» и выполнить команду sed
  • Как выполнить скрипт R, связав его с сценарием оболочки в Linux?
  • Cron Job Не работает
  • Посмотрите, работает ли скрипт при использовании #! / Usr / bin / env
  • Команда Ubuntu runuser?
  • Что такое эквивалент Fedora /var/lib/dpkg/info/.prerm?
  • Ошибка при запуске скрипта PL / SQL
  • One Solution collect form web for “Как ввести сумму, полученную из awk в середине вывода текста”

    Следующий скрипт берет свои аргументы из командной строки, а не из командной строки. Это упрощает повторное использование других скриптов и позволяет пользователю указывать несколько имен пользователей.

     $ cat jake.sh #! /bin/sh inputfile='input.txt' for u in "$@" ; do awk -F'|' -vu="$u" '$1 == u { sum = sum + $3 ; count++} END {print u " has run " count " processes for a total of " \ sum " minutes."}' < "$inputfile" done 

    Обратите внимание, как скрипт оболочки передает переменную оболочки $u скрипту awk через -vu="$u" . Это позволяет избежать использования двойных кавычек вокруг скрипта awk для непосредственного использования оболочки $u … поскольку для этого потребуется экранирование каждого экземпляра $1 , $3 и каждого " в awk-скрипте с обратной косой чертой \ .

    Вход такой же, как в вашем примере:

     $ cat input.txt oliver|Login|100 smith|Login|20 oliver|Time|25 oliver|Time|25 smith|Time|20 Anne|Login|100 

    И вот результат:

     $ ./jake.sh oliver smith Anne oliver has run 3 processes for a total of 150 minutes. smith has run 2 processes for a total of 40 minutes. Anne has run 1 processes for a total of 100 minutes. 

    Если вы действительно хотели, чтобы он запрашивал имя пользователя, сценарий выглядел бы так:

     #! /bin/sh inputfile='input.txt' echo -n "User name?" read username awk -F'|' -vu="$username" '$1 == u { sum = sum + $3 ; count++} END {print u " has run " count " processes for a total of " \ sum " minutes."}' < "$inputfile" 
    Interesting Posts

    Проблемы с таблицей разделов на жестком диске NTFS 3tb

    Fedora 20 замерзает при перезагрузке и отключении питания

    Linux: удалить файл * .. но не file1 и file2

    Centos 7.1 все еще использует устаревшее ядро ​​3.10 как обновить до ядра 4.0

    mutt: как правильно отображать символы emoji?

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

    Возможно ли остановить запись определенных сообщений журнала BIND?

    Существует ли (предпочтительно не-kludgey) способ избежать орфографических исправлений при использовании команды zv `mv`

    как я могу подавить unedsary вывод seds при использовании опции -e?

    Nautilus, монтируйте ISO-файл с помощью контекстного меню

    Как сделать поддержку nemo сжатием файлов по контекстному меню?

    Bash error => "exit: code: требуется числовой аргумент"

    Инструмент Linux для мониторинга потребления полосы пропускания определенного процесса (PID)

    В чем смысл состояния UNCLEAN в iptables

    Как возобновить сборку пакетов в debian?

    Linux и Unix - лучшая ОС в мире.