它又是我。我遇到的另一個問題 首先我需要符合特定圖案,例如:我可以在bash編程中使用vi命令(eg.5DD)嗎?
dfsdf
sdfd
sdfs
sdf
vcv
ssdff
sdfdsf
adssa
我需要匹配SDF,然後我需要刪除一個固定數量的以下行(eg.3DD) 可以我在bash編程中使用vi命令?還是有什麼辦法acheive呢?再次感謝
它又是我。我遇到的另一個問題 首先我需要符合特定圖案,例如:我可以在bash編程中使用vi命令(eg.5DD)嗎?
dfsdf
sdfd
sdfs
sdf
vcv
ssdff
sdfdsf
adssa
我需要匹配SDF,然後我需要刪除一個固定數量的以下行(eg.3DD) 可以我在bash編程中使用vi命令?還是有什麼辦法acheive呢?再次感謝
再次,sed
來救援!要在匹配後進行工作:
sed "/^sdf$/,+3 d" file
這將刪除匹配的行以及後面的三行。只需將3更改爲任意數量的要刪除的行。另外請注意,這將發生在輸入中的每個「sdf」事件中。
剛剛意識到我可能誤解了這個問題。如果你不想刪除匹配的行(在這種情況下,「自衛隊」),你可以這樣做:
sed "/^sdf$/,+3 {/^sdf$/b skip; d; :skip}" file
Bash不是編輯器,它是一個shell。它支持用於命令行編輯的vi
鍵,但它並不真正支持編輯整個文件。 (當然,你可以編程在bash編輯器(使用read
,循環模式和echo
),但慶典是不是這個合適的工具。)
以編程方式編輯文件,嘗試sed
。
最好是當你的問題可以單獨理解,不希望被觀衆記住的另一個問題你問。如果你想匹配文件中的行,用戶輸入等,以及'delete'的含義,那麼這個問題就開放了。 – keppla
謝謝。還有一個問題,我可以通過使用bash編程將文件複製到不同的文件夾中。例如。 c:/ folders/test如果我想將文件複製到文件夾中,是否需要將bash程序放入文件夾文件中? –
它不是必需的,你可以使用絕對路徑(例如:'c:/ somewhere/over/the/rainbow')而不是相對的路徑('over/the/rainbow',這意味着你的當前工作目錄必須是c :/ somewhere) – keppla