2014-11-26 2 views
-1

Я пытаюсь получить выход в 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 как вывод).

+1

Введите целую строку в 'echo'. Если вы оставите переменные без кавычек, оболочка ест пустое пространство. –

+0

Привет, это не сработало. Вы имели в виду это: - echo "$ tdydate", "$ ip", "$ (top -b -n 1 | awk" BEGIN {RS = "\ n"} NR> 7 {print $ 12, $ 1, $ 10} ') "> procinfo.csv –

+0

Создает ли этот вывод top/awk несколько строк? Тогда вы не можете сделать это с помощью одного «эха». Вместо этого закрепите первые два статических поля в 'awk' print' awk -v date = "$ tdydate" -v ip = "$ ip" '.... {print date "," ip "," $ 12, $ 1, $ 10} '' –

ответ

0

Вашего эхо заявление должно быть такое:

echo "$tdydate , $ip , $(top -b -n 1 | awk 'NR>7 {print $12,$1,$10}')" > procinfo.csv 

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

+0

Привет, Это, к сожалению, не сработало. Это дало ниже в качестве выходного сигнала в CSV: - 11/26/2014 20:29 \t 192.168.0.38 \t верхнего 1681105 0,0 INIT 1 0,0 \t \t kthreadd 2 0,0 \t \t миграции/0 3 0,0 \t \t ksoftirqd/0 4 0,0 \t \t миграция/0 5 0,0 \t \t сторожевые/0 6 0,0 \t \t миграция/1 7 0,0 \t \t миграция/1 8 0,0 –

+1

это не ясно из вашего комментария, как это выход Форма tted, и не понятно из вашего вопроса, какой желаемый формат вывода. Измените свой вопрос, чтобы показать, как вы хотите, чтобы результат выглядел. –

+0

Спасибо Том, я добавил желаемый формат вывода на мой вопрос. Пожалуйста посоветуйте .. Спасибо. –

Смежные вопросы