文本转换为csv

时间:2010-12-20 03:54:26

标签: bash

我有Linux命令的输出“谁” 它提供了以下细节......

CURRENT USER/ACCT INFO
17:31:36 up 4:49, 4 users, load average: 0.03, 0.04, 0.00
USER TTY FROM LOGIN@ IDLE JCPU PCPU WHAT
root :0 - 12:59 ?xdm? 4:54 0.02s /bin/sh /usr/bi
root pts/0 :0 12:59 4:31m 0.00s 1:20 kded [kdeinit] 
root pts/1 :0.0 16:18 1.00s 0.00s 0.00s -bash
root pts/2 :0.0 16:25 49.00s 0.02s 0.00s bash

此输出我保存到名为WHO.log

的文件中

现在如何将此输出转换为CSV格式,以便我可以将其导出到某个数据库中, 使用一些bash脚本?

3 个答案:

答案 0 :(得分:1)

试试这个:

your_who_command | awk '{$1=$1; print}' OFS=,

答案 1 :(得分:0)

完全未经测试,但试一试

who | awk '{ if (NR!=1 && NR!=2) {print} }' | sed -e 's/ /, /g'

答案 2 :(得分:0)

假设命令是'who'(你确定吗?),那么你需要空格分隔列1-7输出为逗号分隔字段1-7,但是你需要将第8列和后来作为一个输出字段处理。这可能最好用shell read命令处理。我假设前三行应该被丢弃。

who | sed '1,3d' |
while read user tty from login idle jcpu pcpu what
do echo "$user,$tty,$from,$login,$idle,$jcpu,$pcpu,$what"
done