sed 命令詳解及示例
sed是一種流編輯器,能高效地完成各種替換、刪除、插入等操作,按照文件數(shù)據(jù)行順序,重復(fù)處理滿足條件的每一行數(shù)據(jù),然后把結(jié)果展示打印,且不會(huì)改變原文件內(nèi)容。
sed會(huì)逐行掃描輸入的數(shù)據(jù),并將讀取的數(shù)據(jù)內(nèi)容復(fù)制到臨時(shí)緩沖區(qū)中,稱為“模式空間”(pattern space),然后拿模式空間中的數(shù)據(jù)與給定的條件進(jìn)行匹配,如果匹配成功,則執(zhí)行特定的sed指令,否則跳過輸入的數(shù)據(jù)行,繼續(xù)讀取后面的數(shù)據(jù)。
一、命令介紹
1.1 命令語法
| | | | --- | --- | | | sed [OPTION]... {script-only-if-no-other-script} [input-file]... | | | | | |#如: | | | sed [選項(xiàng)]'匹配條件和操作指令'文件名 | | |cat文件名 | sed [選項(xiàng)]'匹配條件和操作指令'|
1.2 選項(xiàng)參數(shù)
| | | | --- | --- | | | -n, --quiet, --silent | | |#suppress automatic printing of pattern space | | | --debug #annotate program execution | | | -e script, --expression=script | | |#add the script to the commands to be executed | | | -f script-file, --file=script-file | | |#add the contents of script-file to the commands to be executed | | | --follow-symlinks | | |#follow symlinks when processing in place | | | -i[SUFFIX], --in-place[=SUFFIX] | | |#edit files in place (makes backup if SUFFIX supplied) | | | -l N, --line-length=N | | |#specify the desired line-wrap length for the 'l' command | | | --posix #disable all GNU extensions. | | | -E, -r, --regexp-extended | | |#use extended regular expressions in the script (for portability use POSIX -E). | | | -s, --separate | | |#consider files as separate rather than as a single, continuous long stream. | | | --sandbox | | |#operate in sandbox mode (disable e/r/w commands). | | | -u, --unbuffered | | |#load minimal amounts of data from the input files and flush the output buffers more often | | | -z, --null-data | | |#separate lines by NUL characters | | | --help #display this help and exit | | | --version #output version information and exit |
選項(xiàng) | 例子 |
-n, --quiet, --silent 禁止自動(dòng)打印模式(常配合'p'使用,僅顯示處理后的結(jié)果) |
sed -n '/hello/p' filename 使用 /hello/ 匹配含有 "hello" 的行,p 打印匹配的行 |
--debug 以注解的方式顯示 sed 的執(zhí)行過程,幫助調(diào)試腳本 |
sed --debug 's/foo/bar/' filename 當(dāng)你使用 sed 修改內(nèi)容時(shí),它會(huì)顯示調(diào)試信息,以便你了解腳本是如何執(zhí)行的 |
-e script, --expression=script 在命令行中直接指定 sed 腳本(允許多個(gè) sed 表達(dá)式) |
sed -e 's/foo/bar/' -e 's/hello/world/' filename 將文件中的 foo 替換為 bar,然后將 hello 替換為 world |
-f script-file, --file=script-file 從指定的腳本文件中讀取 sed 命令 |
sed -f script.sed filename script.sed 是包含多個(gè) sed 命令的腳本文件,sed 會(huì)按順序執(zhí)行這些命令 |
--follow-symlinks 當(dāng)指定 -i 時(shí),sed 會(huì)跟隨符號(hào)鏈接(symlink)指向的實(shí)際文件進(jìn)行編輯 |
sed -i --follow-symlinks 's/foo/bar/' symlink.txt 如果 symlink.txt 是一個(gè)符號(hào)鏈接文件,sed 會(huì)編輯它指向的實(shí)際文件 |
-i[SUFFIX], --in-place[=SUFFIX] 直接編輯文件(如果提供 SUFFIX,則進(jìn)行備份) |
sed -i.bak 's/foo/bar/' filename 直接在 filename 中將 foo 替換為 bar,并創(chuàng)建一個(gè)備份文件 filename.bak |
-l N, --line-length=N 當(dāng)使用 l 命令(列出行內(nèi)容)時(shí),指定輸出的行寬(N 表示字符數(shù)) |
echo 'hello world' | sed -l 5 'l' 使用 l 命令顯示 "hello world",但每行最多顯示 5 個(gè)字符 |
--posix 禁用 GNU 擴(kuò)展,使 sed 遵循 POSIX 標(biāo)準(zhǔn)語法 |
sed --posix 's/foo/bar/' filename 這將禁用 sed 的一些非標(biāo)準(zhǔn)特性,確保腳本在 POSIX 環(huán)境下工作 |
-E, -r, --regexp-extended 使用擴(kuò)展的正則表達(dá)式(ERE),這與基本正則表達(dá)式(BRE)相比,簡化了一些語法(例如不用轉(zhuǎn)義括號(hào)和 +) |
echo "abc123" | sed -E 's/[a-z]+([0-9]+)/1/' 使用擴(kuò)展正則表達(dá)式,匹配并提取字母后面的數(shù)字 |
-s, --separate 將多個(gè)輸入文件視為獨(dú)立的流,而不是作為一個(gè)連續(xù)的流處理 |
sed -s 's/foo/bar/' file1.txt file2.txt sed 會(huì)分別處理 file1.txt 和 file2.txt,而不是將它們作為一個(gè)整體處理 |
--sandbox 以沙盒模式運(yùn)行,禁止使用 e, r, w 命令,防止 sed 修改文件或執(zhí)行外部命令 |
sed --sandbox 's/foo/bar/' filename 啟用沙盒模式,防止 sed 腳本執(zhí)行危險(xiǎn)的操作 |
-u, --unbuffered 減少從輸入文件讀取數(shù)據(jù)時(shí)的緩沖區(qū)大小,并更頻繁地刷新輸出 |
sed -u 's/foo/bar/' filename 立即將處理結(jié)果輸出到標(biāo)準(zhǔn)輸出,而不是等到處理大量數(shù)據(jù)后再輸出 |
-z, --null-data 將輸入中的行分隔符從換行符 改為 NUL 字符 ?,這在處理二進(jìn)制數(shù)據(jù)或以 NUL 作為分隔符的文本時(shí)很有用 |
sed -z 's/foo/bar/' filename 使用 NUL 字符作為行分隔符處理文本 |
1.3 匹配條件
格式 | 描述 |
/regexp/ | 使用 "正則表達(dá)式",匹配數(shù)據(jù)行 |
n(數(shù)字) | 使用 "行號(hào)" 匹配,范圍是1-$($ 表示最后一行) |
addr1,addr2 | 使用 "行號(hào)或正則" 定位,匹配從 addr1 到 addr2 的所有行 |
addr1,+n | 使用 "行號(hào)或正則" 定位,匹配從 addr1 開始及后面的 n 行 |
n~step | 使用 "行號(hào)",匹配從行號(hào) n 開始,步長為 step 的所有數(shù)據(jù)行 |
1.3.1 定界符
/ 在sed中作為定界符使用,也可以使用任意的定界符。
| | | | --- | --- | | | sed's|foo|bar|g'filename | | | sed'sbar:g'filename | | | | | |#定界符出現(xiàn)在樣式內(nèi)部時(shí),需要進(jìn)行轉(zhuǎn)義: | | | sed's//bin//usr/bin/g'filename |
1.3.2 變量引用
sed表達(dá)式使用單引號(hào)來引用,但是如果表達(dá)式內(nèi)部包含"變量"字符串,則需要使用雙引號(hào)。
| | | | --- | --- | | | foo="world"| | |echo"hello world"| sed"s/$foo/librarookie"| | | hello librarookie |
1.4 操作指令
指令 | 描述 | 例子 |
! | 表示后面的命令,對 "所有沒有被選定" 的行發(fā)生作用 |
sed -n '/foo/!p' filename 只打印不含有 "foo" 的行 |
p | 打?。╬rint)當(dāng)前匹配的數(shù)據(jù)行(常配合 -n 使用) |
sed -n '/foo/p' filename 只打印含有 "foo" 的行 |
l | 小寫L,打印當(dāng)前匹配的數(shù)據(jù)行,并顯示控制字符,如回車符,結(jié)束符$等 |
sed -n '/foo/l' filename 只打印含有 "foo" 的行,并顯示控制字符 |
= | 打印當(dāng)前讀取的數(shù)據(jù)所在的 "行數(shù)" |
sed -n '$=' filename 打印文件最后一行的行數(shù) |
a |
在匹配的數(shù)據(jù)行 "后" 追加(append)文本內(nèi)容 |
sed '/foo/ahello librarookie' filename 在每個(gè)含有 "foo" 行,下面追加一行 "hello librarookie" |
i |
在匹配的數(shù)據(jù)行 "前" 插入(insert)文本內(nèi)容 |
sed '/foo/ihello librarookie' filename 在每個(gè)含有 "foo" 行,上面插入一行 "hello librarookie" |
c |
將匹配的數(shù)據(jù)行 "整行" 內(nèi)容更改(change)為特定的文本內(nèi)容 |
sed '/foo/chello librarookie' filename 將每個(gè)含有 "foo" 整行,替換為 "hello librarookie" |
d | 行刪除,刪除(delete)匹配的數(shù)據(jù)行整行內(nèi)容 |
sed '/foo/d' filename 刪除每個(gè)含有 "foo" 的行 |
r |
從文件中讀?。╮ead)數(shù)據(jù),并追加到匹配的數(shù)據(jù)行后面 |
sed -i '/foo/r datafile' filename 將文件 datafile 的內(nèi)容,追加在文件 filename 中每個(gè)含有 "foo" 的行下面 |
w |
將當(dāng)前匹配到的數(shù)據(jù),寫入(write)特定的文件中 |
sed -n '/foo/w newfile' filename 將文件 filename 中每個(gè)含有 "foo" 的行,寫入到新文件 newfile 里面 |
q [exit code] | 立刻退出(quit)sed腳本 |
sed '5q' filename 打印第 5 行前的數(shù)據(jù),類似sed -n '1,5p |
s/regexp/replace/ | 使用正則匹配,將匹配的數(shù)據(jù)替換(substitute)為特定的內(nèi)容 |
sed 's/foo/bar/' filename 將每個(gè)含有 "foo" 行中,第一次出現(xiàn)的 "foo",替換為 "bar" |
n(數(shù)字) | 只替換第 n 次出現(xiàn)的匹配項(xiàng) |
sed 's/foo/bar/2' filename 將每個(gè)含有 "foo" 行中,第 2 次出現(xiàn)的 "foo",替換為 "bar" |
g | 全局替換(Global substitution):替換每一行中的所有匹配項(xiàng) |
sed 's/foo/bar/g' filename 將每行中的 "foo" ,替換為 "bar" |
i | 忽略大小寫(Ignore case):進(jìn)行不區(qū)分大小寫的匹配 |
sed '/foo/i' filename 打印含有 "foo" 或 "FOO" 的行 |
e | 執(zhí)行(Execute):允許在替換文本中進(jìn)行命令執(zhí)行 |
echo "ls /tmp" | sed 's/ls/ls -l/e' 將sed命令的結(jié)果,當(dāng)作命令執(zhí)行;即輸出ls -l /tmp命令的結(jié)果 |
& | 引用匹配的整個(gè)字符串 |
echo "hello" | sed 's/hello/& librarookie/' 將每行中的 "foo" ,替換為 "bar" |
1.5 高級(jí)操作指令
指令 | 描述 |
h | 將 "模式空間" 中的數(shù)據(jù)復(fù)制到 "保留空間" |
H | 將 "模式空間" 中的數(shù)據(jù)追加到 "保留空間" |
g | 將 "保留空間" 中的數(shù)據(jù)復(fù)制到 "模式空間" |
G | 將 "保留空間" 中的數(shù)據(jù)追加到 "模式空間" |
x | 將 "模式空間" 和 "保留空間" 中的數(shù)據(jù)交換 |
n | 讀取下一行數(shù)據(jù)復(fù)制到 "模式空間" |
N | 讀取下一行數(shù)據(jù)追加到 "模式空間" |
:label | 為 t 或 b 指令定義1abel標(biāo)簽 |
t label | 有條件跳轉(zhuǎn)到標(biāo)簽(1abel),如果沒有 1abel ,則跳轉(zhuǎn)到指令的結(jié)尾 |
b label | 跳轉(zhuǎn)到標(biāo)簽(1abel),如果沒有 label ,則跳轉(zhuǎn)到指令的結(jié)尾 |
y/源/目標(biāo)/ | 以字符為單位將源字符轉(zhuǎn)為為目標(biāo)字符 |
二、常用實(shí)例
2.1 匹配范圍
| | | | --- | --- | | |#行號(hào)范圍:打印第3行到第5行 | | | sed -n'3,5p'filename | | | | | |#正則表達(dá)式匹配范圍:從匹配start_pattern的行開始,到匹配end_pattern的行結(jié)束 | | | sed -n'/start_pattern/,/end_pattern/p'filename | | | | | |#命令組合:從第1行開始,到第一個(gè)空白行為止 | | | sed -n'1,/^$/p'filename | | | | | |#倒數(shù)行范圍:從第1行開始,直到匹配end_pattern的行之前(使用!進(jìn)行取反) | | | sed -n'1,/end_pattern/!p'filename | | | | | |#指定行的倍數(shù):打印所有奇數(shù)行(從第一行開始,步長為 2) | | | sed -n'1~2p'filename |
2.2 增刪改
2.2.1 替換操作(s)
? 基礎(chǔ)替換
| | | | --- | --- | | |#只替換文本中第一次出現(xiàn)的匹配項(xiàng),并將結(jié)果輸出到標(biāo)準(zhǔn)輸出 | | | sed's/foo/bar/'filename | | | | | |#只替換每行中第三次出現(xiàn)的匹配項(xiàng) | | | sed's/foo/bar/3'filename | | | | | |#只打印替換過的行 | | | sed -n's/foo/bar/p'filename | | | | | |#編輯原文件,同時(shí)創(chuàng)建 filename.bak 備份 | | | sed -i.bak's/foo/bar/'filename | | | | | |#忽略大小寫進(jìn)行替換 | | | sed's/foo/bar/i'filename | | | | | |#全局替換 | | | sed's/foo/bar/g'filename | | | | | |#全局替換,每行替換從第 2 次開始出現(xiàn)的匹配項(xiàng) | | | sed's/foo/bar/2g'filename | | | |
? 組合替換
| | | | --- | --- | | |#替換并寫入新文件:將替換過的行寫入 output.txt | | | sed's/foo/bar/w output.txt'filename | | | | | |#結(jié)合標(biāo)記符:在匹配的字符串后添加后綴 | | | sed's/foo/&.bak/'filename | | | | | |#執(zhí)行sed結(jié)果的命令(謹(jǐn)慎使用,可能導(dǎo)致安全風(fēng)險(xiǎn)) | | | sed's/systemctl start/systemctl status/e'filename | | |echo"ls /tmp"| sed's/ls/ls -l/e'| | | | | |#行號(hào)范圍:將第3行到第5行中的"foo"替換為"bar" | | | sed'3,5s/foo/bar/g'filename | | | | | |#正則表達(dá)式匹配范圍:從包含"start"的行開始,到包含"end"的行結(jié)束,替換"foo"為"bar" | | | sed'/start/,/end/s/foo/bar/g'filename | | | | | |#命令組合:從第1行開始,到第一個(gè)空白行為止,替換"foo"為"bar" | | | sed'1,/^$/s/foo/bar/g'filename | | | | | |#倒數(shù)行范圍:從第1行開始,直到包含"end"的行之前,替換"foo"為"bar" | | | sed'1,/end/!s/foo/bar/g'filename | | | | | |#指定行的倍數(shù):替換所有奇數(shù)行中的"foo"為"bar" | | | sed'1~2s/foo/bar/g'filename |
2.2.2 更新操作(aic)
a,i,c 分別表示在行下追加、行上插入和整行更新,字母符合后面可以省略
2.2.2.1 行下追加(a)
| | | | --- | --- | | |#將 "this is a test line" 追加到含有 "hello" 行的下面 | | | sed -i'/hello/a his is a test line'filename | | | | | |#在第 2 行之后插入 "this is a test line" | | | sed -i'2a his is a test line'filename |
2.2.2.2 行上插入(i)
| | | | --- | --- | | |#將 "this is a test line" 插入到含有 "librarookie" 的行上面 | | | sed -i'/librarookie/i his is a test line'filename | | | | | |#在第 5 行之前插入 "this is a test line" | | | sed -i'5i his is a test line'filename |
2.2.2.3 替換當(dāng)前行(c)
| | | | --- | --- | | |#將含有 "librarookie" 的行變成 "this is a test line" | | | sed -i'/librarookie/c his is a test line'filename | | | | | |#將第 5 行變成 "this is a test line" | | | sed -i'3c his is a test line'filename |
2.2.3 刪除操作(d)
| | | | --- | --- | | |#刪除全文 | | | sed -i'd'filename | | | | | |#刪除第 2 行 | | | sed -i'2d'filename | | | | | |#刪除最后一行 | | | sed -i'$d'filename | | | | | |#刪除空白行 | | | sed -i'/^$/d'filename | | | | | |#以 # 號(hào)開頭的行(刪除注釋) | | | sed -i'/^#/d'filename | | | | | |#刪除文件中所有開頭是 test的行 | | | sed -i'/^test/d'filename | | | | | |#刪除文件的第 2 行到 末尾所有行 | | | sed -i'2,$d'filename |
2.3 腳本文件(-f)
sed腳本 scriptfile 是一個(gè)sed的命令清單,啟動(dòng)Sed時(shí),以 -f 選項(xiàng)引導(dǎo)腳本文件名。Sed腳本規(guī)則如下:
1. 在命令的末尾不能有任何空白或文本;
2. 如果在一行中有多個(gè)命令,要用分號(hào)分隔;
3. 以 # 開頭的行為注釋行,且不能跨行;
| | | | --- | --- | | |#這將按照 scriptfile.sed 文件中的命令來編輯 filename 文件 | | | sed -f scriptfile.sed filename | | | | | |#如果你不希望實(shí)際修改文件,可以添加 -n 標(biāo)志和 p命令來打印結(jié)果而不是直接寫入文件 | | | sed -nf scriptfile.sed filename |
scriptfile.sed 內(nèi)容如下:
| | | | --- | --- | | |# 這是注釋,會(huì)被sed忽略 | | | | | |# 替換文件中的第一行中的"old_string"為"new_string" | | | 1s/old_string/new_string/ | | | | | |# 從第3行到第5行,替換"foo"為"bar" | | | 3,5s/foo/bar/g | | | | | |# 刪除包含"delete_this_line"的行 | | | /delete_this_line/d | | | | | |# 在包含"insert_before"的行之前插入新行 | | | /insert_before/i | | | This is the new line to insert | | | | | |# 在文件末尾添加一行 | | | $ a | | | This is the new line at the end of the file |
2.4 標(biāo)記操作
2.4.1 已匹配字符串標(biāo)記(&)
符合匹配條件字符串的標(biāo)記,可以理解為匹配結(jié)果的變量名
| | | | --- | --- | | |#正則表達(dá)式 "w+" 匹配每一個(gè)單詞,使用 [&] 替換它,& 對應(yīng)于之前所匹配到的單詞: | | |echothis is atestline | sed's/w+/[&]/g'| | | [this] [is] [a] [test] [line] | | | | | |# 將 hello 替換為 helloworld | | | sed's/hello/&world/'filename | | | helloworld |
2.4.2 子串匹配標(biāo)記(1)
匹配給定樣式的其中一部分:
1.(..)用于匹配子串,對于匹配到的第一個(gè)子串就標(biāo)記為1,依此類推匹配到的第二個(gè)結(jié)果就是2;
2. 未定義(..)時(shí),效果等同于&標(biāo)記;
| | | | --- | --- | | |#echo this is digit 7 in a number | sed 's/digit ([0-9])/1/' | | | this is 7ina number | | |#命令中 digit 7,被替換成了 7。樣式匹配到的子串是 7。 | | | | | |#(..) 用于匹配子串。[a-z]+ 匹配小寫字母,為第一個(gè)子串1;[A-Z]+ 匹配大寫字母,為第二個(gè)子串2 | | |echo"world HELLO"| sed's/([a-z]+) ([A-Z]+)/2 1/'| | | HELLO world | | | | | |# HELLO 被標(biāo)記為 1,將 | | |echo"hello world"| sed's/(hello) world/1 librarookie/'| | | hello librarookie |
2.5 組合多個(gè)表達(dá)式(-e)
| | | | --- | --- | | |#1. 使用 -e 選項(xiàng),指定多個(gè) sed 表達(dá)式 | | | sed -e'表達(dá)式'-e'表達(dá)式'filename | | | | | |#2. 使用管道符 | ,對結(jié)果重復(fù)使用 sed 命令 | | | sed'表達(dá)式'| sed'表達(dá)式'filename | | | | | |#1. 在表達(dá)式中使用 ; | | | sed'表達(dá)式; 表達(dá)式'filename |
2.6 文件讀寫(r/w)
| | | | --- | --- | | |#1. 從文件讀?。╮) | | |#將文件 datafile 里的內(nèi)容讀取出來,顯示在文件 filename 中匹配 test 的行下面 | | |#如果匹配多行,則將文件 datafile 的內(nèi)容,顯示在文件 filename 中所有匹配 test 的行下面 | | | sed -i'/test/r datafile'filename | | | | | |#2. 寫入新文件(w) | | |#將文件 filename 中所有匹配 test 的數(shù)據(jù)行,都寫入新文件 newfile 里面 | | | sed -n'/test/w newfile'filename | | | | | |#將替換后的 filename 寫入 newfile | | | sed's/foo/bar/w newfile'filename |
2.7 保留空間與模式空間
在 sed 編輯器中,有兩個(gè)非常重要的概念:保留空間(hold space)和模式空間(pattern space)。
1. 模式空間(Pattern Space)
? 模式空間是 sed 用來處理輸入文本的地方。
? 當(dāng) sed 讀取輸入文件的每一行時(shí),它會(huì)將這一行放入模式空間,然后對模式空間中的內(nèi)容執(zhí)行指定的編輯命令。
? 默認(rèn)情況下,模式空間的內(nèi)容在處理后被輸出到標(biāo)準(zhǔn)輸出(通常是屏幕)。
? 模式空間的大小通常受限于系統(tǒng)內(nèi)存,但通常足夠處理單行文本。
2. 保留空間(Hold Space)
? 保留空間是 sed 的第二個(gè)緩沖區(qū),它允許 sed 在處理模式空間的內(nèi)容時(shí)保存數(shù)據(jù)。
? 保留空間可以用來存儲(chǔ)模式空間中當(dāng)前行的副本,或者用于在不同行之間傳遞數(shù)據(jù)。
2.7.1 保持和獲取(h/H/g/G)
| | | | --- | --- | | |#將任何包含 test 的行都被復(fù)制并追加到該文件的末尾 | | | sed -e'/test/h'-e'$G'file | | | | | |# -e '/test/h' | | |#1. 匹配 test 的行被找到后,將存入模式空間, | | |#2. h 命令將其復(fù)制并存入保留空間(保持緩存區(qū)的特殊緩沖區(qū)內(nèi))。 | | |# | | |# -e '$G' | | |#1. 當(dāng)?shù)竭_(dá)最后一行($)后, | | |#2. G 命令取出保留空間的行,然后把它放回模式空間中,且追加到現(xiàn)在已經(jīng)存在于模式空間中的行的末尾。 | | |#3. 在這個(gè)例子中就是追加到最后一行。 |
2.7.2 保持和互換(h/x)
互換模式空間和保持緩沖區(qū)的內(nèi)容。也就是把包含test與check的行互換:
| | | | --- | --- | | | sed -e'/test/h'-e'/check/x'file |
2.8 打印奇數(shù)行或偶數(shù)行
| | | | --- | --- | | |#方法1:利用 n ,打印一行,隱藏一行 | | | sed -n'p;n'test.txt #奇數(shù)行 | | | sed -n'n;p'test.txt #偶數(shù)行 | | | | | |#方法2:利用步長 2 ,跳過非目標(biāo)行 | | | sed -n'1~2p'test.txt #奇數(shù)行 | | | sed -n'2~2p'test.txt #偶數(shù)行 |
2.9 退出命令(q)
| | | | --- | --- | | |#打印完第10行后,退出sed | | | sed'10q'filename |
鏈接:https://www.cnblogs.com/librarookie/p/18504458
-
SED
+關(guān)注
關(guān)注
0文章
26瀏覽量
27296 -
字符
+關(guān)注
關(guān)注
0文章
235瀏覽量
25510 -
命令
+關(guān)注
關(guān)注
5文章
733瀏覽量
22749
原文標(biāo)題:??sed命令從入門到實(shí)戰(zhàn):小白也能看懂的例子(附詳細(xì)解釋)?
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評(píng)論請先 登錄
Linux中sed命令用法

labview8.20程序設(shè)計(jì)從入門到精通教程(PDF)
快速理解linux流編輯器sed命令
linux學(xué)習(xí)大全之sed 命令詳解
LabVIEW入門與實(shí)戰(zhàn)開發(fā)100例
Scala動(dòng)手實(shí)戰(zhàn)入門
從入門到精通-西門子工業(yè)網(wǎng)絡(luò)通信實(shí)戰(zhàn)
linux 從入門到跑路-電源管理

javaweb從入門到實(shí)戰(zhàn)
新書推薦 | TSMaster開發(fā)從入門到精通

評(píng)論