将命令输出写入Perl中的CSV文件

时间:2018-08-30 21:32:04

标签: shell perl

我正在尝试将命令输出写入csv文件。下面是我要用于将数据写入csv文件的命令

ps -eo pid,comm,pmem,vsz | grep process  | awk '{print $1",",$2",",$3",",$4}'

我们如何在Perl中做到这一点。 csv文件的标题应具有,然后是相应的值:

pid,comm,pmem,vsz

我试图做这样的事情,但是它对我不起作用:

echo "execution started.."

pid,comm,pmem,vsz >> out.txt

while [ true ]; do
    echo "running.."
    sleep 2
    ps -eo pid,comm,pmem,vsz | grep process  | awk '{print $1",",$2",",$3",",$4}' >> out.txt
done

2 个答案:

答案 0 :(得分:1)

link评论中的tadman有很多信息,但是您也可以这样做

ps -eo pid,comm,pmem,vsz | grep process_name | 
    perl -nE '
        BEGIN { say "pid,comm,pmem,vsz" }; 
        say join ",", split
    ' > ps_process.out

(为了便于阅读,分为多行)

BEGIN块仅在编译阶段执行,因此不会在迭代中重复。

答案 1 :(得分:0)

这是一种简单的方法,使用Java 2 C# 1 Java 2 Python 1 Java 1 Java 1 开关为管道中的每行隐式创建-a(这是说@F的捷径)

@F = split /\s+\, $_