我在正则表达式中发现了以下内容:
s/.*\`\(.*\)'/\1/g
我想知道重音是什么意思。我对正则表达式只有非常基本的了解,所以我尝试查找它,但基本搜索并没有给我带来任何有用的东西。
上下文:我正在尝试这个问题的公认答案:An error building Qt libraries for the raspberry pi
建议运行以下脚本来调整 simlinks:
find . -maxdepth 1 -type l | while read i;
do qualifies=$(file $i | sed -e "s/.*\`\(.*\)'/\1/g" | grep ^/lib)
if [ -n "$qualifies" ]; then
newPath=$(file $i | sed -e "s/.*\`\(.*\)'/\1/g" | sed -e "s,\`,,g" | sed -e "s,',,g" | sed -e "s,^/lib,$2/lib,g");
echo $i
echo $newPath;
sudo rm $i;
sudo ln -s $newPath $i;
fi
done
但是,它没有做任何事情,所以我试图了解它应该如何工作。
find
找到很多文件,例如:
./libcap-ng.so.0
./libnettle.so.4
./libSDL-1.2.so.0
./libwebpmux.so.1
./libnss_nisplus.so
./libavahi-gobject.so.0
./libgdk-3.so.0
./librsvg-2.so.2
./libatk-bridge-2.0.so.0
./libgeoclue.so.0
./libdv.so.4
./libcdda_interface.so.0
./libheimbase.so.1
./libfontconfig.so.1
./libXinerama.so.1
./libopenal.so.1
./libicule.so.52
./libaudio.so.2
./libmplex2-2.1.so.0
等等数十个其他文件,但它们似乎都不“符合”正则表达式。
最佳答案
在 Bash 中,双引号字符串 "..."
允许各种扩展,包括使用 $(...)
进行命令替换或`...`
。例如,这个:
cat "fo`echo ob`ar"
相当于cat foobar
,因为`echo ob`
表示“运行命令echo ob
并将其输出放在这里”。
因此,如果您想在双引号字符串中包含实际的 `
,则必须用反斜杠引用它。这就是你的脚本正在做的事情。例如,sed -e "s,\`,,g"
表示 sed -e 's,`,,g'
,即“删除所有出现的`
”。 (请注意,`
对于 sed
本身来说没有任何特殊含义;它只是匹配输入中的 `
。相同的命令可以是写为 tr -d '`'
。)
关于regex - 正则表达式中反斜杠后跟重音符号是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33252052/