我试图在spredsheet.xls中使用awk命令找到名称旁边的字段
我有这种情况;
**Column1** *Column2*
**PIPPO** *pippo@gmail.com darth@gmail.com*
**PLUTO** *pluto@gmail.com duck@gmail.com*
**WATER** *drink@gmail.com water@gmail.com*
如何在第1列中搜索单词并在第2列中显示内容?
awk '$1 == "PIPPO"' spreadsheet.xls
这个命令显示:
PIPPO pippo@gmail.com darth@gmail.com
这是我的代码---- Column1(PIPPO,PLUTO,WATER)和awkvar是一回事----
for fullname in /*.zip; do
filename="${fullname##*/}"
awkvar=$(echo $filename | cut -d_ -f2-2)
awk -v var="$awkvar" '{print $2,$3}' spreadsheet.xls
done
但这不起作用。如何在awk中放置模式变量?
更新2
我有以逗号分隔的更新列表xls
FIELD1,皮波@ gmail.com,达斯@ gmail.com
FIELD1,皮波@ gmail.com,达斯@ gmail.com,sampei @ gmail.com
output=(awk -F ',' -v var="$awkvar" '$1==var {print $2,$3,$4} spreadsheet.txt)
但awk在输出开头删除了一些字母
echo "$output"
但如果我删除$ 4
output=(awk -F ',' -v var="$awkvar" '$1==var {print $2,$3} spreadsheet.txt)
echo "$output"
它是第1行的正确显示,但不适用于第2行:
我做错了什么?
答案 0 :(得分:1)
可能您只想显示第二列。使用这个awk:
awk '$1 == "PIPPO" {print $2}' spreadsheet.xls
修改强>
如果要在第1列之后显示所有列,请使用:
sed -n 's/^PIPPO *//p' spreadsheet.xls
pippo@gmail.com darth@gmail.com
答案 1 :(得分:0)
您可以使用以下内容:
awk '$1=="PIPPO" {print $2}' file
那将输出:
pippo@gmail.com
我不清楚该格式,因此根据具体情况,您可能需要{print $2, $3}
。
如评论中所述,根据您更新的代码,您可以使用此代码在awk
内使用bash var:
awk -v var="$awkvar" '$1==var {print $2,$3}' spreadsheet.xls