2013-02-27 37 views
0

我做了這個腳本:如何結合sed'句子'?

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.*//'

成一個單一的命令?

+0

你有什麼問題嗎? – amphibient 2013-02-27 23:25:04

+0

我正在運行sed三來完成這項工作。我的問題是:如何只使用一個sed來做同樣的事情。 – user2079266 2013-02-27 23:27:33

+0

你有(至少)4個不同的答案,每個答案都是準確的,每個答案都提供了一種替代方法來完成同樣的工作。讓沒有人說你的選擇是有限的。 William Pursell的回答可能應該是'勝利',因爲他指出'grep'是不必要的。 – 2013-02-27 23:34:26

回答

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.*//' 
+0

不錯,像魅力一樣工作。 – user2079266 2013-02-27 23:31:02

1

你可以簡單地考慮所有sed命令,腳本,並添加;命令之間:

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

這個工作也是。 Thnak你。 – user2079266 2013-02-27 23:31:24

3

你可以把在文件中的命令叫sedscr例如,每行一個這樣:

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

然後調用:

xrandr | grep '*' | sed -f sedscr 

我喜歡這種方法,以防萬一我想補充的多個命令未來。

+1

+1我在同一時間思考相同 – amphibient 2013-02-27 23:35:50

1

隨着換行符

echo coobas | sed 's:c:f: 
s:s:r:' 
0

沒有sed只是grep

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

$ xrandr | perl -lne 'print $1 if /^\s+(\d+)(?=.*?\*)/' 
1440 
0

另一個要考慮的是使SED配置文件(打電話給我t config.sed)列出所有替換規則。例如: -

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

,然後運行

sed -f config.sed filein.txt > fileout.txt