从参数文件中查找不匹配的文本

从参数文件中查找不匹配的文本

我有一个参数文件,我试图抓住一个单词,然后只删除该单词,留下其他所有内容。例如:

一个例子是:

#Parameter File
CAT=SammyISaGreatCat

这是我的一串代码:

export CAT=`grep CAT $PARFILE | grep -Ev "CAT="`

我想SammyIsaGreatCat成为从参数文件中抓取的唯一东西。我怎样才能做到这一点?

答案1

您可以使用以下命令读取参数

export CAT=$(grep -i "^cat=" "${PARFILE}" | head -1 | cut -d= -f2-) 

额外的检查使 cat 不区分大小写,并且当您有两行带有CAT=.

答案2

另一种解决方案是awk

export CAT=$(awk -F= 'BEGIN{OFS=FS}$1~/^\W*CAT\W*$/{$1="";r=substr($0,1+length(FS))};
                        END{print r}' "$PARFILE")

这样做的优点是:

  • 灵活地使用键 、\W*、 周围的可选空格CAT
  • 如果有多个结果,则仅打印最后一个。
  • =与价值观 一起工作。
    • 首先,将输出字段分隔符设置为与输入字段分隔符相同 ( OFS=FS)。
    • $0清除第一个字段,并保存从第一个分隔符之后开始重建的行( )。

相关内容