将awk命令结果输出到变量

用户468587

我跑从控制台输出它正确的结果下面的命令:0

sudo -H -u hadoop bash -c "/home/hadoop/hadoop-install/bin/hadoop dfsadmin -report | grep 'Under replicated blocks' | awk '{print \$4}'"

但是,如果我将其放在shell脚本中并分配给变量,则“ awk”将不再起作用,它只会从“ grep”输出整个结果:

replications=`sudo -H -u hadoop bash -c "/home/hadoop/hadoop-install/bin/hadoop dfsadmin -report | grep 'Under replicated blocks' | awk '{print \$4}'"`
echo "Replications: $replications"

结果:Replications: Under replicated blocks: 0我如何才能再次使awk工作,仅输出第4列,该列为0,而不是整个字符串?

温特穆特

在反引号命令替换中,\其后$为just $根据POSIX标准:

在命令替换的反引号格式中,反斜杠应保留其字面意思,除非后面跟有“ $”,“`”或“ \”(美元符号,反引号,反斜杠)。(...)

使用该$(command)格式,在开括号后到匹配的闭括号后的所有字符均构成命令。可以将任何有效的Shell脚本用于命令,但仅由重定向组成的脚本会产生未指定的结果。

而且从bash手册页中可以更明确地看到:

当使用旧式的反引号形式的替换时,反斜杠保留其字面意思,除非后面跟$,`或\。没有反斜杠的第一个反引号将终止命令替换。使用$(command)表格时,括号之间的所有字符组成命令;没有一个被特别对待。

所以最简单的方法是使用

replications=$(sudo -H -u hadoop bash -c "/home/hadoop/hadoop-install/bin/hadoop dfsadmin -report | grep 'Under replicated blocks' | awk '{print \$4}'")

replications=`sudo -H -u hadoop bash -c "/home/hadoop/hadoop-install/bin/hadoop dfsadmin -report | grep 'Under replicated blocks' | awk '{print \\\$4}'"`

也可以。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何将awk结果输出到变量

来自分类Dev

将时间命令的结果输出到bash脚本中的变量

来自分类Dev

将python命令结果输出到文件

来自分类Dev

将python命令结果输出到文件

来自分类Dev

awk将错误的变量输出到文件

来自分类Dev

无法将正确的结果输出到变量

来自分类Dev

无法将正确的结果输出到变量

来自分类Dev

awk将命令输出插入变量

来自分类Dev

无法将Awk输出到变量,表示权限被拒绝

来自分类Dev

将fdisk bash命令输出到多行变量

来自分类Dev

将结果输出到文件

来自分类Dev

将awk命令“结果”作为变量传递给date命令

来自分类Dev

将ls输出输出到scp命令

来自分类Dev

awk输出到多个shell变量

来自分类Dev

将awk命令的输出存储到变量中

来自分类Dev

将 awk 变量传递给命令并读取输出

来自分类Dev

无法将 awk 命令的输出存储到变量中

来自分类Dev

awk将命令结果分配给变量

来自分类Dev

PHP Shell命令输出到变量

来自分类Dev

如何将结果输出到shell?

来自分类Dev

将查询结果输出到文件?

来自分类Dev

将DataFrame的结果输出到QLabel

来自分类Dev

将结果(返回值)输出到打印出来的变量instread的JSP标记文件

来自分类Dev

Log4Net:如何将程序内的日志记录结果输出到变量中?

来自分类Dev

将结果(返回值)输出到打印出来的变量instread的JSP标记文件

来自分类Dev

将文件内容输出到stdout的命令?

来自分类Dev

将命令输出到剪贴板?

来自分类Dev

bash-在for循环中,将命令输出到文件并设置变量

来自分类Dev

将power-shell命令输出到在if else语句中不起作用的变量