2011-07-18 79 views
1

它又是我。我遇到的另一個問題 首先我需要符合特定圖案,例如:我可以在bash編程中使用vi命令(eg.5DD)嗎?

dfsdf 
sdfd 
sdfs 
sdf 
vcv 
ssdff 
sdfdsf 
adssa 

我需要匹配SDF,然後我需要刪除一個固定數量的以下行(eg.3DD) 可以我在bash編程中使用vi命令?還是有什麼辦法acheive呢?再次感謝

+0

最好是當你的問題可以單獨理解,不希望被觀衆記住的另一個問題你問。如果你想匹配文件中的行,用戶輸入等,以及'delete'的含義,那麼這個問題就開放了。 – keppla

+0

謝謝。還有一個問題,我可以通過使用bash編程將文件複製到不同的文件夾中。例如。 c:/ folders/test如果我想將文件複製到文件夾中,是否需要將bash程序放入文件夾文件中? –

+0

它不是必需的,你可以使用絕對路徑(例如:'c:/ somewhere/over/the/rainbow')而不是相對的路徑('over/the/rainbow',這意味着你的當前工作目錄必須是c :/ somewhere) – keppla

回答

3

再次,sed來救援!要在匹配後進行工作:

sed "/^sdf$/,+3 d" file 

這將刪除匹配的行以及後面的三行。只需將3更改爲任意數量的要刪除的行。另外請注意,這將發生在輸入中的每個「sdf」事件中。

剛剛意識到我可能誤解了這個問題。如果你不想刪除匹配的行(在這種情況下,「自衛隊」),你可以這樣做:

sed "/^sdf$/,+3 {/^sdf$/b skip; d; :skip}" file 
0

如果你想這樣做手工然後,打開這個文本文件,

less -N x.txt 

grep命令字符串「自衛隊」使用/sdf。你會看到你的關鍵字突出顯示。繼續按n,直到出現下一個字符串。當你想切換到vi;只需按v即可。要恢復到less,只需執行保存並退出(ZZ:wq)。

+0

當我嘗試這個時,'v'切換到不同的編輯器。 – pavium

+1

打開哪個編輯器取決於環境變量'$ VISUAL'和'$ EDITOR'。如果nither被設置,它會打開'vi'。 – carlpett

0

Bash不是編輯器,它是一個shell。它支持用於命令行編輯的vi鍵,但它並不真正支持編輯整個文件。 (當然,你可以編程在bash編輯器(使用read,循環模式和echo),但慶典是不是這個合適的工具。)

以編程方式編輯文件,嘗試sed

相關問題