0

我做了这个脚本:

xrandr | grep '*' | sed 's/\S*\(*+\)\S*//g'| sed 's/ //g' | sed 's/x.*//'

如何组合这三个sed命令:

  1. sed 's/\S*\(*+\)\S*//g'
  2. sed 's/ //g'
  3. sed 's/x.*//'

成一个命令?

4

6 回答 6

3

-e

xrandr | grep '*' | sed -e 's/\S*\(*+\)\S*//g' -e 's/ //g' -e 's/x.*//'

请注意,这grep不是必需的:

xrandr | sed -e '/\*/!d' -e 's/\S*\(*+\)\S*//g' -e 's/ //g' -e 's/x.*//'
于 2013-02-27T23:26:43.227 回答
3

您可以将这些命令放在一个名为 sedscr 的文件中,例如,每行一个:

s/x.*//
s/ //g
s/\S*\(*+\)\S*//g

然后调用:

xrandr | grep '*' | sed -f sedscr

我更喜欢这种方法,以防我将来想添加更多命令。

于 2013-02-27T23:27:17.710 回答
1

您可以简单地将所有sed命令视为脚本并;在命令之间添加一个:

xrandr | grep '*' | sed 's/\S*\(*+\)\S*//g ; s/ //g ; s/x.*//'
于 2013-02-27T23:26:12.953 回答
1

使用换行符

echo coobas | sed 's:c:f:
s:s:r:'
于 2013-02-27T23:28:27.177 回答
0

没有sed但只是grep

$ xrandr | grep -oP '^\s+\K\d+(?=.*?\*)'
1440

或使用

$ xrandr | perl -lne 'print $1 if /^\s+(\d+)(?=.*?\*)/'
1440
于 2013-02-27T23:31:28.000 回答
0

要考虑的另一件事是制作一个 sed 配置文件(称为config.sed)列出所有替换规则。例如:

1,/^END/{
   s/x.*//
   s/ //g
   s/\S*\(*+\)\S*//g
}

然后运行

sed -f config.sed filein.txt > fileout.txt
于 2013-02-27T23:33:02.687 回答