需要使awk将输出抑制为stdout

时间:2016-06-27 11:20:48

标签: bash shell awk

我想使用awk来解决我的解决方案,逐行解析记录(循环到最大元素(最多NF)),然后将一些字段存储在{{1}中变量。我能够获得我需要的记录,但无法避免bash打印 它自己的输出到awk

这是我采用的例子。

stdout

我想将单词newvar=$(echo "Hello, this is a sentence with a few words." | awk '{ s = ""; for (i = 0; i <= 5; i++) s = s $i " "; print s }' 存储在bash变量Hello, this is a sentence中。虽然有更有效的方法可以做到这一点,但目前只考虑使用newvar的方法。

这是将输出存储为变量

中的输出
awk

我尝试通过Hello, this is a sentence with a few words. Hello, this is a sentence 将<{1}}压缩为stdout

null

说出了一个难看的错误,

  

awk:(FILENAME = - FNR = 1)警告:写入标准输出错误(错误的文件描述符)

Haven在这里找不到合适的答案,也没有找到如何做到这一点。 1>&-是否可以实现这一点?如果找到了确切帖子的重复也很受欢迎!

1 个答案:

答案 0 :(得分:4)

这里的问题是你从0循环到5.这意味着你将 ul.find("li").each(function (a, ele) { $(ele).attr("tabindex", options.items[a].tabindex); $(ele).on("focusout", function () { setTimeout(function () { **//ACCESS UL HERE** debugger; }, 1); }.bind(ul,ele)); }.bind(ul)); 存储在变量$0中,如你所知,s包含完整记录。这意味着您要存储完整记录,然后是5个第一个字段。

所以只需从1循环到5:

$0

请注意,没有必要在开头设置$ awk '{s = ""; for (i = 1; i <= 5; i++) s = s $i " "; print s }' <<< "Hello, this is a sentence with a few words." Hello, this is a sentence s:任何变量在您开始使用时都会被设置。虽然你可能正在使用它,因为你有多行,所以你需要在每条记录之后重置它的值。

这就是说,如果您只想打印前5个单词,请使用""

cut