是否可以在指定的$变量中grep字符串或将字段与awk进行比较。
例如
grep "word" "$foo"
仅列出$ foo的完整内容。
awk命令无法识别变量,但会在我的文件夹中搜索文件:
awk 'FNR==NR{a[$1]++;next}a[$1]' "$foo" "$fee"
它说 awk:致命:无法打开文件`$ foo'阅读(没有这样的文件或目录)
@BMW建议提供更多细节。他们来了: 这是完整的命令:
foo=$(cat my_text.txt | grep -B5 'application' | paste -s --delimiters=" " |sed 's/--/\n/g'| awk '{print $1 " " $2 " " $3 " " $4 " " $5}')
这是$ foo的输出和内容。
答案 0 :(得分:3)
您可以使用herestring代替文件名来执行此操作:
grep "word" <<< "$foo"
如果您的命令只需要一个输入文件/变量,这将有效。如果您需要多个,例如示例awk
命令,则需要使用process substitution:
awk 'FNR==NR{a[$1]++;next}a[$1]' <(echo "$foo") <(echo "$fee")
<(...)
构造运行内部命令,然后将输出视为文件。
示例:
$ echo "$foo"
first line
second line
last one
$ echo "$fee"
example
text
$ grep "line" <<< "$foo"
first line
second line
$ grep "last" <(echo "$foo")
last one
$ awk '{print NR": "$0}' <(echo "$foo") <(echo "$fee")
1: first line
2: second line
3: last one
4: example
5: text
答案 1 :(得分:0)
如果您正在使用awk进行单词搜索,请使用:
awk -v w="word" '$0 ~ w' "$foo"
假设$foo
是一个文件。
您甚至可以使用:
awk '/word/' "$foo"