我正在尝试将下面的行简化为单行:
sed -i 's/-XX\:PermSize=128m\s//g' /usr/share/hbase/conf/hbase-env.sh
sed -i 's/-XX\:MaxPermSize=128m\s//g' /usr/share/hbase/conf/hbase-env.sh
我尝试使用与此-XX\:(?:Max|)PermSize=128m\s
类似的东西,但没有成功。
答案 0 :(得分:4)
请注意,(?:Max|)
是一个不可捕获的组,它与sed
使用的POSIX正则表达式引擎不兼容。您正在使用BRE POSIX引擎,因此,要使用捕获组,需要使用\(...\)
,而要使用替代运算符,则需要\|
。
您可以使用
sed -i 's/-XX:\(Max\)\?PermSize=128m\s//g' /usr/share/hbase/conf/hbase-env.sh
这是一个BRE POSIX表达式,因此\(Max\)\?
与可选的Max
字符序列匹配。
或者,
sed -i -E 's/-XX:(Max)?PermSize=128m\s//g' /usr/share/hbase/conf/hbase-env.sh
-E
选项启用ERE POSIX语法,用Max
定义了可选的(Max)?
字符序列。
s="ABC-XX:PermSize=128m DEF-XX:MaxPermSize=128m "
sed 's/-XX:\(Max\)\?PermSize=128m\s//g' <<< "$s"
# => ABCDEF
sed -E 's/-XX:(Max)?PermSize=128m\s//g' <<< "$s"
# => ABCDEF
答案 1 :(得分:3)
您可以在可选组Max
中将(Max)?
设置为可选:
-XX\:(max)?PermSize=128m\s
例如:
sed -i 's/-XX\:(Max)?PermSize=128m\s//g' /usr/share/hbase/conf/hbase-env.sh
答案 2 :(得分:2)
尝试
sed -i 's/-XX\:\(Max\)?PermSize=128m\s//g' /usr/share/hbase/conf/hbase-env.sh
答案 3 :(得分:1)
尝试一下:
private void addInfoIcon(Drawable infoIconDrawable) {
int infoIconSizePx = getResources().getDimensionPixelSize(R.dimen.info_icon_size);
final ImageView ivInfoIcon = new ImageView(getContext());
ivInfoIcon.setLayoutParams(new LayoutParams(infoIconSizePx, infoIconSizePx));
ivInfoIcon.setImageDrawable(infoIconDrawable);
rlInfo.addView(ivInfoIcon);
}
最好添加sed -ir 's/-XX\:(Max)?PermSize=128m\s//g' /usr/share/hbase/conf/hbase-env.sh
,而不是添加所有转义符。如果您使用的是GNU sed。