首页 > 解决方案 > 每个 grep 结果的新行分隔符(即使 grep 输出为空)

问题描述

如果文件内容是:

echo -n "Host is:"; grep -h -E 'host_value'    /file_path
echo -n "IPAD is:"; grep -h -E 'Address_value' /file_path

即使 grep 输出为空,如何强制每个 grep 输出位于单独的行中?以及如何用特定字符串替换空值,例如“此参数没有值”。

例如,如果 host_value 是 hostname 但 Address_value 为空,则输出应如下所示:

Host is:hostname  
IPAD is:No value for this parameter

谢谢

标签: bashgrep

解决方案


也许首先将 grep 的结果分配给一个变量。

HOST=$(grep -h -E 'host_value'    /file_path 2>/dev/null)
ADDR=$(grep -h -E 'Address_value' /file_path 2>/dev/null)

echo "Host is: $HOST"
echo "IPAD is: $ADDR"

# replace null value
DEFAULT="No value for this parameter"
echo "Host is: ${HOST:-$DEFAULT}"
echo "IPAD is: ${ADDR:-$DEFAULT}"

请参阅Bash 参考手册了解:-.


推荐阅读