Bash输出下降了吗?
这是我的密码。它基本上只是grep'和使输出看起来更好。 它工作得很好,但是如果我使用REGEX输入,输出是空的。计算返回的grep行数的myVar似乎是正确的,但awk似乎正在丢失输出文本 谢谢Bash输出下降了吗?,bash,awk,grep,output,Bash,Awk,Grep,Output,这是我的密码。它基本上只是grep'和使输出看起来更好。 它工作得很好,但是如果我使用REGEX输入,输出是空的。计算返回的grep行数的myVar似乎是正确的,但awk似乎正在丢失输出文本 谢谢 #!/bin/bash center() { termwidth="$(tput cols)" padding="$(printf '%0.1s' ={1..500})" printf '%*.*s %s %*.*s\n' 0 "$(((termwidth-2-${#1})/2))" "$
#!/bin/bash
center() {
termwidth="$(tput cols)"
padding="$(printf '%0.1s' ={1..500})"
printf '%*.*s %s %*.*s\n' 0 "$(((termwidth-2-${#1})/2))" "$padding" "$1" 0 "$(((termwidth-1-${#1})/2))" "$padding"
}
if [ $1 = "-h" ] || [ $# -eq 0 ]; then
echo 'USAGE: ./Check.sh [PATTERN1] [PATTERN2] [PATTERN3] ... [PATTERN20]
Search for PATTERN in the HOSTS file. Patterns can be in the Perl REGEX form.'
else
for item in "$@"
do
center "SEARCHING $item"
grep -i $item /etc/hosts
myVar=$(wc -l <(grep -i -P $item /etc/hosts) | awk '{print $1}')
if [ $myVar -eq 0 ]; then
center "COULD NOT FIND $item"
fi
center "FOUND $myVar IN $item"
done
fi
如果我输入一个非正则表达式字符串,那么输出和计数都可以。被grep'ed的文件是一个公司主机文件,因此我无法共享成功的输出,但基本上匹配的行位于搜索和查找行之间。不是因为第一个grep中的内容以某种方式被删除,如果没有终端控制字符清除屏幕或向上移动光标,这是不可能的,因为在awk启动之前,该输出已经发送到终端。相反,第二个grep是使用不同的参数运行的,因此,只有输出到wc-l然后到awk的grep才将其参数解析为PCRE样式的正则表达式 更改:
grep -i $item /etc/hosts
致:
一些引用问题,BTW——考虑在这里提问题之前找到的问题。我也倾向于建议使用BASH-X YuScript来生成跟踪级别的日志记录,从而尽早减少错误行为。例如,您可以看到GRIP是如何被调用的,然后用同样的方式调用它并比较结果。我不知道丢失输出文本是什么意思-myVar包含awk的输出,因此,如果该变量为非空,根据定义,该文本不能丢失。您的意思是希望直接从先前的调用发出文本吗?请注意,您在该调用中没有使用-P,因此之前的grep实例没有将您的输入视为PCRE?我的意思是,如果我使用非regex参数运行脚本,则在搜索和查找之间会有大量行。我只希望看到它们像上面那样夹在一起,如果它显示为find0。所以我的意思是我不知道这些线都到哪里去了。如果我不使用正则表达式,它们就会出现。
grep -i $item /etc/hosts
grep -i -P "$item" /etc/hosts