alr*_*lrz 5 sed awk text-processing
我有一个 csv 文件,如下所示:
site1.com,aaa,bbb,ccc
site2.com,qqq
site3.com,rrr,uuu,ppp
site4.com
site5.com,ddd,sss
Run Code Online (Sandbox Code Playgroud)
我想替换第四列为空的行(行)。我想通过对它们运行命令来操纵所述行。例如,使用awk:
awk -F, '$4=="" {system("$1,cmd1 $1")}' test.csv
Run Code Online (Sandbox Code Playgroud)
然后我想导出如下(output1是从cmd1命令输出):
site1.com,aaa,bbb,ccc
site2.com,output1
site3.com,rrr,uuu,ppp
site4.com,output1
site5.com,output1
Run Code Online (Sandbox Code Playgroud)
awk -F, -v q=\' '
function shellquote(s) {
gsub(q, q "\\" q q, s)
return q s q
}
$4 == "" {
printf "%s,", $1
system("cmd " shellquote($1))
next
}
{print}'
Run Code Online (Sandbox Code Playgroud)
该shellquote部分是很重要的。例如,考虑值为$1like;reboot的情况。
awk -F, '{ if ( $4 == "" ){printf "%s,",$1 ; system(CMD) ;}else {print $0}}' test.csv
Run Code Online (Sandbox Code Playgroud)
如果第四个字段为空,则打印第一个字段以及命令的输出,否则打印孔线。
但请注意命令的输出将如何打印
| 归档时间: |
|
| 查看次数: |
1792 次 |
| 最近记录: |