【问题标题】:Usage of AWK in LinuxLinux 中 AWK 的使用
【发布时间】:2015-12-08 04:03:28
【问题描述】:

请解释shell脚本中使用的以下行,

awk -F\| -v src=$storekey 'src==$41' $SRC_Path >> $DST_Path

谢谢!

【问题讨论】:

标签: linux shell awk


【解决方案1】:

好的,首先 ${variable} 是一个 shell 变量,所以这些变量会在你的脚本中定义得更高,即

storekey = "1234" 什么的

你可以在你的 shell(linux 或命令行终端)上试试这个

类型:

$ storekey="foo"
$ echo $storekey

因此,您的大部分问题都与变量和命令行有关,这会混淆它们的使用方式,如果您在命令行上替换了变量进行测试,您可以对其进行测试以找出它们在做什么。

本质上,Awk 是一种流解析工具,因此,如果您有一个包含 10 列的文件,并且具有已知的分隔符,例如“,”或“|”您可以向 awk 询问要打印或输出的特定列。这就是下面发生的事情,但它被自定义 shell 变量的存在弄糊涂了。

然后分解命令行 awk 正在解析一个“|”由 $storekey 变量定义的分隔输入 (-F\| ),从 $SRC_PATH(一个目录)到 $DST_PATH(另一个目录或路径)取 src== $41 所在的列(这对正在输入的数据有一些引用) .

如果您可以分享更多的 shell 脚本,我可以提供更深入的答案。

顺便说一句,您还可以使用命令找到更多信息

  • man awk
  • info awk

从您的命令行,但是对于那些不太熟悉 *nix 变体的人来说,这些有点神秘。

【讨论】:

  • 这是否意味着 awk 正在获取第 41 列中的内容?
  • 是的,$41 = 第 41 列。但是它与 src== 匹配。不确定这是否有助于您理解
  • 感谢您的解释。我真的很想知道为什么 41 是该行中的数字。这已经回答了我的问题。
  • @smflores07 那么请务必投票给我的答案!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-12-10
  • 1970-01-01
  • 2015-04-14
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多