linux - 在电子表格中查找文本 line1 并获取第 2 列

标签 linux bash file awk

我正在尝试显示我在 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/

相关文章:

php - 将文件加字符串从 android 上传到服务器不起作用

c - 程序跳过部分代码

linux - 看点 : "execution time" on the every linux command executed

linux - 将多个输出发送到 sed

linux - wget 和 apt get 的区别

linux - 我如何更改日期格式(sed 命令)

linux - 如何在 bash 中循环一对文件?

c - 阻止 Linux read(2),直到所有 count 个字节都到达

linux - 如何在远程克隆上 pull 更改

c - 为什么 printf 在多线程程序中不起作用?