【问题标题】:Read value from specific row and column从特定行和列读取值
【发布时间】:2019-04-15 17:18:46
【问题描述】:

我有这种格式的 csv 文件:

1 value1
2 value2
3 value3

我也可以这样定义(如果更方便的话)

column1,column2
1,value1
2,value2
3,value3

我应该编写一个 shell 脚本来匹配第一列的值并从第二列的值中获取该行的值。 例如,我有变量var 如果 var 等于 1,则获取并使用(或打印)value1。 如果值为 2,则取 value2,依此类推。 行数限制为 5。 这可能吗? 谢谢

【问题讨论】:

  • 使用 grep 并像这样剪切:var=1 ; grep "^${var}" yourfile.txt | cut -d',' -f2
  • 嗨红。这是出于什么目的使用“^1”?如何匹配将在脚本中读取的我的变量?谢谢
  • ^ 表示匹配行首。所以^1 表示以 1 开头的匹配行
  • 嗨红。但是如果我的 value2 例如是这样的“1.1.1”怎么办。这是否意味着如果我用值“1”对它进行 grep,它会在第一行(因为第一行第一列值)以及第二行(因为它类似于第二行第二列值)对我进行 grep?谢谢
  • 试试看。

标签: linux bash shell centos sh


【解决方案1】:

Awk 是你的朋友:

$ cat input.txt
1 value1
2 value2
3 value3 
$ awk -v key=1 '$1 == key { print $2 }' input.txt
value1
$ awk -v key=2 '$1 == key { print $2 }' input.txt
value2

等等。只需将key=1 替换为key=$var

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-16
    • 2020-01-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-12
    • 1970-01-01
    相关资源
    最近更新 更多