如何在一行内用sed匹配一个或另一个词

Aqu*_*wer 7 regex sed cpu-word match

对于这个命令,xwininfo -id 0x8a00004 |grep "Absolute\|Width\|Height"我有这个输出

Absolute upper-left X:  44
Absolute upper-left Y:  53
Width: 999
Height: 698
Run Code Online (Sandbox Code Playgroud)

通过使用单个sed命令,我希望它成为这样:

nX=44
nY=53
nWidth=999
nHeight=698
Run Code Online (Sandbox Code Playgroud)

我目前的代码是这样的:

xwininfo -id 0x8a00004 |grep "Absolute\|Width\|Height" |sed -r 's".*([XY]):[[:blank:]]*(.*)"n\1=\2"'
Run Code Online (Sandbox Code Playgroud)

我知道要与sed匹配单词,我需要\bWordToMatch\b在表达式上使用,但我找不到一种方法将它([XY])放在我的命令所在的位置......我也知道要匹配"一个或其他"字,我需要使用\|,我不能猜测..

jks*_*hah 10

试试以下 sed

sed -r 's/.*(X|Y|Width|Height)\s*:\s*([0-9]+)/n\1=\2/'
Run Code Online (Sandbox Code Playgroud)

  • 在[GNU sed](https://www.gnu.org/software/sed/manual/sed.html#Regular-Expressions)中,括号和竖线[需要转义](http://superuser.com/a/112000/219226)像这样:`\(\ | \)`. (6认同)
  • 这个答案使用“-r”标志,相当于GNU“--regexp-extended”。不需要用“-r”转义,但答案应该是这样的。 (2认同)