目前我有;
分开的这两个命令:
ID=$(wmctrl -d | grep "\* DG"); kdialog --msgbox "D = ${ID:(-1)}"
是否可以绕过辅助变量ID
的创建,但仍然使用子串索引(此处使用负索引从后面计数)?
我正在寻找XXX
中"D = ${XXX:(-1)}"
的替代品。我目前的所有尝试都导致了糟糕的替代"错误。
注意:原始命令(如下)有一些缺陷,其中一些评论涉及:
export ID=$(wmctrl -d | egrep "\* DG"); kdialog --msgbox "D = ${ID:(-1)}"
答案 0 :(得分:1)
一个明显的解决方法是使用sed
代替egrep
:
kdialog --msgbox "D = $(wmctrl -d | sed -n 's/.*\* DG.*\(.\)$/\1/p')"
这里的逻辑是默认不打印任何行(-n
);然后在匹配正则表达式的行上,用整个行替换最后一个字符,并在匹配和后续替换(/p
)时打印。