我有一个参数文件,我试图抓住一个单词,然后只删除该单词,留下其他所有内容。例如:
一个例子是:
#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
清除第一个字段,并保存从第一个分隔符之后开始重建的行( )。
- 首先,将输出字段分隔符设置为与输入字段分隔符相同 (