在awk的shell中,我能否使用变量代替文件路径?

3

对于 awk,

我可以用变量代替文件路径吗?? arr=$(awk -v str=start '$2 ~ "^" str "[0-9]*" { print $2; exit; }' /filepath)

注意输出之前在文件路径中,现在在一个名为“A”的变量中。 尝试如下:

  arr=$(awk -v str=start '$2 ~ "^" str "[0-9]*" { print $2; exit; }' ,$a)
arr=$(awk -v VAR="a" str=start '$2 ~ "^" str "[0-9]*" { print $2; exit; }' ,$a)

无法正常工作。

请查看先前的帖子以获取更多详细信息: 访问使用 awk 在文件中查找字符串

任何帮助将不胜感激。


使用:arr=$(echo "$a" | awk -v str=start '$2 ~ "^" str "[0-9]*" { print $2; exit; }') - undefined
抱歉,让我再试一次..很快会更新的。 - undefined
所以你有一个类似于 a-/filepath 的Shell代码?也许你需要使用 export a=/filepath。并且请记住,在Linux/Unix中,所有的文本,包括变量名,都是区分大小写的。$a$A 是两个不同的变量。我已经警告过你了!;-) 祝你好运。 - undefined
为什么在$a之前加了一个逗号?这样做没有帮助。在你的第二个arr=中,你使用了-v VAR,这是awk的内部变量,但是你在awk中从未引用过VAR。变量$a只在shell中可见,对awk来说是不可见的。如果你有a=/filepath,那么你的命令将尝试执行awk ... ,/filepath。注意到问题所在的逗号!让你的其中一行awk输出你需要的数据,而不要将其包裹在arr=$(..)中。一旦这个工作正常,再添加arr=$(...)。祝你好运。 - undefined
搞定了。谢谢 :) - undefined
1个回答

2

这很有效,谢谢anubhava

使用:

arr=$(echo "$a" | awk -v str=start '$2 ~ "^" str "[0-9]*" { print $2; exit; }')

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接