Я пытаюсь получить выход в CSV-файл на моем Linux (Centos) поле со следующими столбцами:Проблема с использованием новой строки в AWK
"timestamp" "date" "process name" "process id" "%memory"
Ниже мой код:
tdydate=$(date +'%m-%d-%Y %H:%M:%S')
ip=$(ip route get 8.8.8.8 | awk 'NR==1 {print $NF}')
echo $tdydate "," $ip "," $(top -b -n 1 | awk 'BEGIN {RS = "\n"} NR>7 {print $12,$1,$10}') > procinfo.csv
Однако, как и ожидалось, он не печатает информацию в новой строке. В то время, когда я просто под ним работает абсолютно нормально и печатает все необходимые данные в нужном формате: -
top -b -n 1 | awk 'BEGIN {RS = "\n"} NR>7 {print $12,$1,$10}' > procinfo.csv
Когда я пытаюсь напечатать метку времени и внутрибрюшинно, а также с эхо, изменения формата в одной строке. Может кто-то, пожалуйста, поправьте меня, где я ошибаюсь?
Желаемый результат должен быть в формате ниже: -
Первый столбец временной метки, второй является IP, thrid это имя процесса, четвертый идентификатор процесса и пятый один% памяти. Это должны быть значения, разделенные запятыми (csv как вывод).
Введите целую строку в 'echo'. Если вы оставите переменные без кавычек, оболочка ест пустое пространство. –
Привет, это не сработало. Вы имели в виду это: - echo "$ tdydate", "$ ip", "$ (top -b -n 1 | awk" BEGIN {RS = "\ n"} NR> 7 {print $ 12, $ 1, $ 10} ') "> procinfo.csv –
Создает ли этот вывод top/awk несколько строк? Тогда вы не можете сделать это с помощью одного «эха». Вместо этого закрепите первые два статических поля в 'awk' print' awk -v date = "$ tdydate" -v ip = "$ ip" '.... {print date "," ip "," $ 12, $ 1, $ 10} '' –