找到正则表达式

时间:2015-08-03 12:54:53

标签: regex sh

我正在尝试使用代码

从我的文件中提取正则表达式
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

这里自动删除\ 我不知道为什么会发生这种情况

1 个答案:

答案 0 :(得分:1)

read正在从它读取的行中删除反斜杠。为防止这种情况,请使用-r标志。

while read -r line; do

您的正则表达式也应该将\s替换为[[:space:]]。正斜杠在正则表达式中没有任何特殊含义,因此不需要对它们进行转义。

chkregex="REGEX[[:space:]]+WITH[[:space:]]+/(.*)/"