我想使用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>&-
是否可以实现这一点?如果找到了确切帖子的重复也很受欢迎!
答案 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