我想通过awk '{print $3}' mysql
提取第3列,并在该文件(mysql)的开头添加command[column 3 output]=
,依此类推。
我无法使用sed来做到这一点:
sed "s/^/command[$(awk '{print $3}' mysql)]=/" mysql
文件内容:
/usr/local/check_abc -a Handler_read_rnd -A Handler_read_rnd -w ">49000000" -c ">50000000"
/usr/local/check_abc -a Handler_delete -A Handler_delete -w ">520000" -c ">530000"
输出应类似于:
command[Handler_read_rnd]=/usr/local/check_abc -a Handler_read_rnd -A Handler_read_rnd -w ">49000000" -c ">50000000"
command[Handler_delete]=/usr/local/check_abc -a Handler_delete -A Handler_delete -w ">520000" -c ">530000"
如何使该命令起作用?
预先感谢
答案 0 :(得分:2)
只需使用awk
:
awk '{print "command[" $3 "]=" $0}' mysql.txt
说明:
$0
是一个特殊变量,它包含整个输入行。 $1
-$xxx
包含输入中的字段。 $3
是字段3。
输出:
command[Handler_read_rnd]=/usr/local/check_abc -a Handler_read_rnd -A Handler_read_rnd -w ">49000000" -c ">50000000"
command[Handler_delete]=/usr/local/check_abc -a Handler_delete -A Handler_delete -w ">520000" -c ">530000"
答案 1 :(得分:0)
一个非常简单的搜索最终使我发现了这一点: https://unix.stackexchange.com/questions/108782/pass-the-output-of-previous-command-to-next-as-an-argument
我引用:
要回答您的问题,听起来好像您想获取汇率 从第一个命令的输出中,然后将比率用作 第二个命令的命令行参数。这是一种方法
rate=$(command1 | sed -ne 's/^rate..\([0-9]*\)%.*/\1/p')
command2 -t "rate was $rate"
如果该页面不够用,请查看该页面以获取更多信息。
答案 2 :(得分:0)
这可能对您有用(GNU sed):
sed -r 's/^((\S+)(\s+)?){3}/command[\2]=&/' file
匹配每行的前三个参数,并使用模式匹配和分组来制造所需的字符串。
组内的组迭代始终记住最后一场比赛。