【问题标题】:how to search for an occurrence of string in shell ignoring spaces如何在忽略空格的shell中搜索字符串的出现
【发布时间】:2022-01-01 22:46:27
【问题描述】:

我有以下参数需要检查它是否在文件中可用。

PARAMS='SQLNET.INBOUND_CONNECT_TIMEOUT>=45'

如何检查文件中是否出现上述参数,如果文件中可用,则计数为 1。还要注意,在“>=”之前和之后可以有空格.

我有以下代码:

PARAM_COUNT=`cat file_name | tr -d "[:blank:]"  |awk '$1 ~ /^[^;#]/' | grep -i ${PARAM} | wc -l`

请提出需要修改的建议。谢谢。

【问题讨论】:

    标签: shell unix


    【解决方案1】:
    • 不需要 awk,因为 grep 会执行 reg exp
    • wc -l 不需要,因为 grep 也可以计数
    cat input | tr -d '[:blank:]' | grep -c "^PARAMS='SQLNET.INBOUND_CONNECT_TIMEOUT>=45'"
    

    请注意^,表示该文本应位于行首。

    或者:

    grep -c "^[[:blank:]]*PARAMS='SQLNET.INBOUND_CONNECT_TIMEOUT[[:blank:]]*>=[[:blank:]]*
    45'" input
    

    【讨论】:

    • 我们将只传递 PARAMS 的值,因此不能按照上面的建议使用,因为我们在 PARAMS 列表中有很多参数要检查。
    • 您可以通过以下方式更改此设置:echo "PARAMS='SQLNET.INBOUND_CONNECT_TIMEOUT>=45'" | sed 's/\(>=\)/[[:blank:]]*\1[[:blank:]]*/g'
    猜你喜欢
    • 2015-12-17
    • 1970-01-01
    • 2018-12-16
    • 1970-01-01
    • 2018-04-11
    • 1970-01-01
    • 2021-04-25
    • 2017-03-10
    • 2022-01-19
    相关资源
    最近更新 更多