【发布时间】:2015-02-10 23:37:33
【问题描述】:
是否可以在分配的 $variable 中使用 awk grep 字符串或比较字段。
例如
grep "word" "$foo"
只列出$foo的完整内容。
awk 命令不识别变量,但在我的文件夹中搜索文件:
awk 'FNR==NR{a[$1]++;next}a[$1]' "$foo" "$fee"
它说 awk: fatal: cannot open file `$foo' for reading (No such file or directory)
@BMW 建议提供更多详细信息。他们来了: 这是完整的命令:
foo=$(cat my_text.txt | grep -B5 'application' | paste -s --delimiters=" " |sed 's/--/\n/g'| awk '{print $1 " " $2 " " $3 " " $4 " " $5}')
这是 $foo 的输出和内容。
- reaction_1 jj-cju 2 应用程序
- reaction_1 jj-cju 2 应用程序
- reaction_1 jj-cjo 2 应用程序
- reaction_4 jj-cji 2 应用程序
- reaction_5 jj-cju 2 应用程序
- reaction_5 kk-cju 2 应用程序
- reaction_7 jj-cju 2 应用程序
- reaction_7 kk-cji 2 应用程序
- reaction_7 kk-cji 2 应用程序
- reaction_7 kk-cju 2 应用程序
- reaction_7 mm-cju 2 应用程序
【问题讨论】:
-
运行
echo $foo,输出是什么? -
它显示 $foo 的内容,它是一个单词列表。
-
单词列表?好的,这不是文件名。您需要将文件名分配给变量
foo -
听起来你可能走上了一条好路。这就是将我以前的命令的竞争分配给 $foo 的方式: foo=$(cat my_text.txt | paste -s --delimiters=" " |sed 's/--/\n/g' | awk '{打印 $1 " " $2 " " $3 " " $4 " " $5}')
-
那么为什么不直接粘贴
my_test.txt的一些内容示例,以及 $fee 中的内容。您在上面粘贴的命令质量太差。你不应该混合使用 `paste/sed/awk',我们应该有简单的方法来做到这一点。