linux 常用命令

2021-08-31 04:26:05 字數 3886 閱讀 5730

# sed [-nefr] [動作]

引數∶-n ∶使用安靜(silent)模式。在一般 sed 的用法中,所有來自 stdin

的資料一般都會被列出到螢幕上。但如果加上 -n 引數後,則只有經過

sed 特殊處理的那一行(或者動作)才會被列出來。

-e ∶直接在指令列模式上進行 sed 的動作編輯;

-f ∶直接將 sed 的動作寫在乙個檔案內, -f filename 則可以執行 filename 內的

sed 動作;

-r ∶sed 的動作支援的是延伸型正規表示法的語法。(預設是基礎正規表示法語法)

-i ∶直接修改讀取的檔案內容,而不是由螢幕輸出。

動作說明∶ [n1[,n2]]function

n1, n2 ∶不見得會存在,一般代表『選擇進行動作的行數』,舉例來說,如果我的動作

是需要在 10 到 20 行之間進行的,則『 10,20[動作行為] 』

function 有底下這些咚咚∶

a ∶新增, a 的後面可以接字串,而這些字串會在新的一行出現(目前的下一行)~

c ∶取代, c 的後面可以接字串,這些字串可以取代 n1,n2 之間的行!

d ∶刪除,因為是刪除啊,所以 d 後面通常不接任何咚咚;

i ∶插入, i 的後面可以接字串,而這些字串會在新的一行出現(目前的上一行);

p ∶列印,亦即將某個選擇的資料印出。通常 p 會與引數 sed -n 一起運作~

s ∶取代,可以直接進行取代的工作哩!通常這個 s 的動作可以搭配

正規表示法!例如 1,20s/old/new/g 就是啦!

範例∶範例一∶將 /etc/passwd 的內容列出,並且我需要列印行號,同時,請將第 2~5 行刪除!

# nl /etc/passwd | sed '2,5d'

1 root:x:0:0:root:/root:/bin/bash

6 sync:x:5:0:sync:/sbin:/bin/sync

7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

.....(後面省略).....

# 看到了吧?因為 2-5 行給他刪除了,所以顯示的資料中,就沒有 2-5 行棉~

# 另外,注意一下,原本應該是要下達 sed -e 才對,沒有 -e 也行啦!

# 同時也要注意的是, sed 後面接的動作,請務必以 '' 兩個單引號括住喔!

# 而,如果只要刪除第 2 行,可以使用 nl /etc/passwd | sed '2d' 來達成,

# 至於第 3 到最後一行,則是 nl /etc/passwd | sed '3,$d' 的啦!

範例二∶承上題,在第二行後(亦即是加在第三行)加上『drink tea?』字樣!

# nl /etc/passwd | sed '2a drink tea'

1 root:x:0:0:root:/root:/bin/bash

2 bin:x:1:1:bin:/bin:/sbin/nologin

drink tea

3 daemon:x:2:2:daemon:/sbin:/sbin/nologin

# 嘿嘿!在 a 後面加上的字串就已將出現在第二行後面棉!那如果是要在第二行前呢?

# nl /etc/passwd | sed '2i drink tea' 就對啦!

範例三∶在第二行後面加入兩行字,例如『drink tea or .....』『drink beer?』

# nl /etc/passwd | sed '2a drink tea or ......\

> drink beer ?'

1 root:x:0:0:root:/root:/bin/bash

2 bin:x:1:1:bin:/bin:/sbin/nologin

drink tea or ......

drink beer ?

3 daemon:x:2:2:daemon:/sbin:/sbin/nologin

# 這個範例的重點是,我們可以新增不只一行喔!可以新增好幾行~

# 但是每一行之間都必須要以反斜線 \ 來進行新行的增加喔!所以,上面的例子中,

# 我們可以發現在第一行的最後面就有 \ 存在啦!那是一定要的喔!

範例四∶我想將第2-5行的內容取代成為『no 2-5 number』呢?

# nl /etc/passwd | sed '2,5c no 2-5 number'

1 root:x:0:0:root:/root:/bin/bash

no 2-5 number

6 sync:x:5:0:sync:/sbin:/bin/sync

# 沒有了 2-5 行,嘿嘿嘿嘿!我們要的資料就出現啦!

範例五∶僅列出第 5-7 行

# nl /etc/passwd | sed -n '5,7p'

5 lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin

6 sync:x:5:0:sync:/sbin:/bin/sync

7 shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown

# 為什麼要加 -n 的引數呢?您可以自行下達 sed '5,7p' 就知道了!(5-7行會重複輸出)

# 有沒有加上 -n 的引數時,輸出的資料可是差很多的喔!

範例六∶我們可以使用 ifconfig 來列出 ip ,若僅要 eth0 的 ip 時?

# ifconfig eth0

eth0 link encap:ethernet hwaddr 00:51:fd:52:9a:ca

inet addr:192.168.1.12 bcast:192.168.1.255 mask:255.255.255.0

inet6 addr: fe80::250:fcff:fe22:9acb/64 scope:link

up broadcast running multicast mtu:1500 metric:1

.....(以下省略).....

# 其實,我們要的只是那個 inet addr:..那一行而已,所以棉,利用 grep 與 sed 來捉

# ifconfig eth0 | grep 'inet '|sed 's/^.*addr://g'|sed 's/bcast.*$//g'

# ifconfig eth0 | grep 'inet '|sed 's/^.*addr://g'|sed 's/ bcast.*$//g'

#這兩行命令差不多,但是第二行在bacst前有個空格,一定要注意,說明連空格在內都去除了,可以使用

#上面兩行命令重向到兩個文字檔案中,例如1.txt 2.txt 仔細檢視這兩個檔案的大小

# 您可以將每個管線 (|) 的過程都分開來執行,就會曉得原因棉!

# 去頭去尾之後,就會得到我們所需要的 ip 亦即是 192.168.1.12 棉~

範例七∶將 /etc/man.config 檔案的內容中,有 man 的設定就取出來,但不要說明內容。

# cat /etc/man.config | grep 'man'| sed 's/#.*$//g'| sed '/^$/d'

# 每一行當中,若有 # 表示該行為註解,但是要注意的是,有時候,

# 註解並不是寫在第乙個字元,亦即是寫在某個指令後方,如底下的模樣∶

# 『shutdown -h now # 這個是關機的指令』,註解 # 就在指令的後方了。

# 因此,我們才會使用到將 #.*$ 這個正規表示法!

範例八∶利用 sed 直接在 ~/.bashrc 最後一行加入『# this is a test』

# sed -i '$a # this is a test' ~/.bashrc

# 上頭的 -i 引數可以讓你的 sed 直接去修改後面接的檔案內容喔!而不是由螢幕輸出。

# 至於那個 $a 則代表最後一行才新增的意思。

Linux常用命令之Linux常用命令實戰知識點

在在複習linux,這是以前做的筆記,分享一下。linux系統 一切皆檔案 操作檔案就是操作linux系統 一 linux版本 1 redhat 企業版 收費 2 centos redhat的社群版 免費 3 ubuntu 4 紅旗 二 linux的特點 1 多使用者 多工 2 豐富的網路功能 3 ...

LINUX常用命令

一 目錄結構 目錄名稱 意 義 vmlinuz 該目錄中存放的是系統核心 bin 該目錄中存放linux的常用命令,在有的版本中是一些和根目錄下相同的目錄。boot 該目錄下存放的都是系統啟動時要用到的程式,當用lilo引導linux時,會用到這裡的一些資訊 dev 該目錄包含了linux系統中使用...

linux 常用命令

ssh 連線 eg.ssh l mike www.mydomain.com or 192.168.0.1 scp 複製 本地 遠端 scp localfile username tohost newfile 遠端 本地 scp username tohost remotefile local 把tx...