linux多行刪除
❶ linux怎麼刪除文件偶數行
刪除偶數行的方法如下:
?
1
:g/^/+1 d
上面用到了:gbobal命令,gbobal命令格式如下:
?
1
:[range]global/{pattern}/{command}
global命令實際上是分成兩步執行:首先掃描[range]指定范圍內的所有行,給匹配{pattern}的行打上標記;然後依次對打有標記的行執行{command}命令,如果被標記的行在對之前匹配行的命令操作中被刪除、移動或合並,則其標記自動消失,而不對該行執行{command}命令。{command}可以是一個ex命令,也可以是用|分隔的多個ex命令,這樣我們就可以對被標記行,或從標記行定址到的行進行多種不同的操作。
上面刪除偶數行的命令,先匹配所有行,然後隔行刪除(其中+1用以定位於當前行的下一行)。為什麼是隔行呢?因為在對第一行執行+1 d命令時刪除的是第二行,而第二行雖然也被標記了,但已不存在了,因此不會執行刪除第三行的命令。
刪除幾數行的命令如下:
?
1
:g/^/d|m
其中m的作用是移出偶數行的標記,防止偶數行也被刪除。
另外刪除幾數行偶數行,也可以用normal命令,分別為(第一個命令為幾數行):
?
12
:%norm jkdd:%norm jdd
❷ linuxsed命令怎麼通過正則刪除多行
要通過Linux的sed命令刪除多行,可以採用幾種不同的方法。方法之一是使用`d`命令配合行號。例如,若需刪除第5至第10行,命令如下:
`sed -i '5,10d' filename`
這里的`5,10`表示行號范圍,`d`為刪除命令,`filename`為文件名。
另一種方法是利用正則表達式刪除匹配模式的多行。命令格式如下:
`sed -n '/pattern/p;N;D' filename`
這里的`/pattern`是正則表達式,`p`表示列印匹配行,`N`表示連接下一行,`D`用於刪除連接後的行。舉例,若要刪除包含"hello"的行及其之後的兩行:
`sed -n '/hello/p;N;D' filename`
使用sed命令打開文本文件並應用正則表達式匹配目標行。例如,以下命令會打開文件`test.txt`,並匹配以「start」開始、以「end」結尾的多行:
`sed -n '/start/,/end/p' test.txt`