我正在尝试显示我在 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,pippo@gmail.com,darth@gmail.com
FIELD1,pippo@gmail.com,darth@gmail.com,sampei@gmail.com
output=(awk -F ',' -v var="$awkvar" '$1==var {print $2,$3,$4} spreadsheet.txt)
但是awk删除了输出开头的一些字母
echo "$output"
- ippo@gmail.com darth@gmail.com
- pippo@gmail.com darth@gmail.com sampei@gmail.com
但是如果我删除 $4
output=(awk -F ',' -v var="$awkvar" '$1==var {print $2,$3} spreadsheet.txt)
echo "$output"
第 1 行显示正确,第 2 行显示不正确:
- pippo@gmail.com darth@gmail.com
- pippo@gmail.com darth@gmail.com
我做错了什么?
最佳答案
可能您只想显示第 2 列。使用这个 awk:
awk '$1 == "PIPPO" {print $2}' spreadsheet.xls
编辑:
如果要显示第一列之后的所有列,请使用:
sed -n 's/^PIPPO *//p' spreadsheet.xls
pippo@gmail.com darth@gmail.com
关于linux - 在电子表格中查找文本 line1 并获取第 2 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20702384/