2014-01-21 39 views
2

我怎樣才能製作一個單獨的sed腳本(我們稱之爲script.sed),它只顯示更改的行,而不必在執行時使用-n選項? (對不起,我的英文)一個簡單的sed腳本,只顯示改變的行

我有一個名爲data2.txt的數字文件,我需要更改以「.5」結尾的行並在控制檯中打印出這些更改的行。

我知道如何用單個命令(sed -n 's/.5$//gp' data2.txt)來做到這一點,但是我們的大學教授要求我們使用sed -f script.sed data2.txt命令來做同樣的事情。

任何想法?

+0

對不起,你的英語?這比許多母語爲英語的人要好。事實上,它是完美無暇的。 – tenub

+0

謝謝你,你是最善良的,我真的很感激。 :) – user3221028

回答

4

下應您的sed腳本工作:

s/.5$//gp 
d 

-n選項將抑制線自動印刷,其他的方式做到這一點是使用d命令。從手冊頁:

d  Delete pattern space. Start next cycle. 

這工作,因爲該行的自動打印發生在一個週期的結束,並使用d命令意味着你永遠達不到一個週期,從而結束無線條會自動打印。

+0

太棒了!非常感謝,這就是我一直在尋找的東西:) – user3221028

+0

由於它固定在行尾,並且不是使用多行標誌的多行表達式,所以'g'不是必需的。 – potong

1

這可能爲你工作(GNU SED):

#n 
s/.5$//p 

保存這一個文件,並運行:

sed -f file.sed file.txt 
+0

第一個#n是一個相當於sed -n設置成sed腳本的選項嗎? – NeronLeVelu

+1

@NeronLeVelu參見[常用命令](http://www.gnu.org/software/sed/manual/sed.html#Common-Commands) – potong

+0

謝謝,不知道#n的特殊行爲首先放在腳本中 – NeronLeVelu

相關問題