我正在尝试使用代码
从我的文件中提取正则表达式echo "enter file path"
read upfile
chkregex="REGEX\s+WITH\s+\/(.*)\/"
while read line ;
do
if [[ $line =~ $chkregex ]];
then
echo "${BASH_REMATCH[1]}" >>ct.txt
fi
done<$upfile
就像让我的文件中的数据类似
REGEX WITH /^\s*COPY\s+pickled\_test\_license\s+\(id\,\s+report\_i/
以便提取正则表达式部分。 但是当我跑步时,我得到像
这样的数据^s*COPYs+pickled_test_licenses+(id,s+report_i
这里自动删除\ 我不知道为什么会发生这种情况
答案 0 :(得分:1)
read
正在从它读取的行中删除反斜杠。为防止这种情况,请使用-r
标志。
while read -r line; do
您的正则表达式也应该将\s
替换为[[:space:]]
。正斜杠在正则表达式中没有任何特殊含义,因此不需要对它们进行转义。
chkregex="REGEX[[:space:]]+WITH[[:space:]]+/(.*)/"