有一个包含粗体字的文本,例如,像手册页。怎样才能做到只有那个粗体的文字?粗体文本可以包含"-“。例如,
echo -e "Normal \e[1mBold1 \e[21mNormal Normal \e[1m--Bold-2 \e[21mNormal" 返回
Normal **Bold1** Normal Normal **--Bold-2** Normal现在我想要的是
echo -e "Normal \e[1mBold1 \e[21mNormal Normal \e[1mBold-2 \e[21mNormal" | egrep -o 'bold only'所以输出是:
Bold1 --Bold-2
我试过
echo -e "Normal \e[1mBold1 \e[21mNormal Normal \e[1m--Bold-2 \e[21mNormal" | egrep "\e\[1mBold1 \e\[21m"但什么也没回。
发布于 2014-08-26 18:22:49
问题是,在输出中,您没有得到\e或类似的东西。你得到了一个转义角色。(将输出转储到xxd中以了解我的意思。
这意味着您需要在grep模式中有一个文字转义字符。
最简单的方法可能是使用$'..'引用。
echo -e "Normal \e[1mBold1 \e[0mNormal Normal \e[1m--Bold-2 \e[0mNormal" | grep -P -o $'\e\[1m.*?\e\[0m'话虽如此,但总的来说,这是一件非常丑恶的事情,绝对是最好的避免。
https://stackoverflow.com/questions/25512497
复制相似问题