【发布时间】:2017-09-24 10:38:48
【问题描述】:
我正在尝试使用 AWK 命令,它对我的打印效果非常好,并且我想要的确切方式
我的问题是,我如何从脚本中知道我使用的 awk 命令是否在不破坏和改变打印方式的情况下打印了某些内容?
我使用的命令:
gawk 'BEGIN{RS=ORS="\n\n" {s=tolower($0)} s~/word1|word2/' input_file.log
我试过了:
status=gawk 'BEGIN{RS=ORS="\n\n" {s=tolower($0)} s~/word1|word2/' input_file.log
if [ -z $status]
then
//status is empty or null, means nothing printed in awk command
echo "nothing"
else
//printed something in awk command
echo $status
问题是echo $status 按顺序打印所有行,行之间没有“新行”
如何从 awk 打印原始照片而不破坏它?
示例: 输入文件:
line 0 no words in here
line 1 starting
line 1 word1
line 2 no words here as well
line 3 starting
line 3 word2
line 3 end
line 4 nothing
line 5 nothing
命令:
gawk 'BEGIN{RS=ORS="\n\n" {s=tolower($0)} s~/word1|word2/' input_file.log
预期输出:
line 1 starting
line 1 word1
line 3 starting
line 3 word2
line 3 end
如果我使用:
stat=$(gawk 'BEGIN{RS=ORS="\n\n" {s=tolower($0)} s~/word1|word2/' input_file.log)
echo $stat
我得到输出:
line 1 starting line 1 word1 line 3 starting line 3 word2 line 3 end
提前致谢!
【问题讨论】:
-
1) 如果您设置
RS=""而不是RS="\n\n"您的脚本将工作相同但不是特定于 gawk 的,2) 没有单词边界,您将在查找时匹配foobarfoo, 3) shell cmets 以#开头,而不是//。