Linux下一切皆文件立帖,對(duì)Linux的操作就是對(duì)文件的處理眼溶。
把最近學(xué)習(xí)的liunx命令做一個(gè)總結(jié),方便復(fù)習(xí)使用晓勇。
目錄
一堂飞、grep 按關(guān)鍵字過(guò)濾文件行
二、cut 列截取工具
三绑咱、sed 替換文件中的內(nèi)容
四绰筛、sort 排序,sort -u 2.txt描融、去除文件的重復(fù)行
五铝噩、tee
六、diff 逐行比較文件的不同
七窿克、paste 合并文件行
八骏庸、tr 替換刪除文件中的字符
一、grep
grep是行過(guò)濾工具年叮,用于根據(jù)關(guān)鍵字進(jìn)行行過(guò)濾
1具被、語(yǔ)法:
grep [選項(xiàng)] '關(guān)鍵字' 文件名
2、常見(jiàn)選項(xiàng):
-i: 不區(qū)分大小寫(xiě)
-v: 查找不包含指定內(nèi)容的行,反向選擇
-w: 按單詞搜索
-o: 打印匹配關(guān)鍵字
-c: 統(tǒng)計(jì)匹配到的行數(shù)
-n: 顯示行號(hào)
-r: 逐層遍歷目錄查找
-A: 顯示匹配行及后面多少行
-B: 顯示匹配行及前面多少行
-C: 顯示匹配行前后多少行
-l:只列出匹配的文件名
-L:列出不匹配的文件名
-e: 使用正則匹配
-E:使用擴(kuò)展正則匹配
^key:以關(guān)鍵字開(kāi)頭
key$:以關(guān)鍵字結(jié)尾
^$:匹配空行
3只损、常見(jiàn)的案例使用
# grep -i root passwd 忽略大小寫(xiě)匹配包含root的行
# grep -w ftp passwd 精確匹配ftp單詞
# grep -w hello passwd 精確匹配hello單詞;自己添加包含hello的行到文件
# grep -wo ftp passwd 打印匹配到的關(guān)鍵字ftp
# grep -n root passwd 打印匹配到root關(guān)鍵字的行號(hào)
# grep -ni root passwd 忽略大小寫(xiě)匹配統(tǒng)計(jì)包含關(guān)鍵字root的行
# grep -nic root passwd 忽略大小寫(xiě)匹配統(tǒng)計(jì)包含關(guān)鍵字root的行數(shù)
# grep -i ^root passwd 忽略大小寫(xiě)匹配以root開(kāi)頭的行
# grep bash$ passwd 匹配以bash結(jié)尾的行
# grep -n ^$ passwd 匹配空行并打印行號(hào)
# grep ^# /etc/vsftpd/vsftpd.conf 匹配以#號(hào)開(kāi)頭的行
# grep -v ^# /etc/vsftpd/vsftpd.conf 匹配不以#號(hào)開(kāi)頭的行
# grep -A 5 mail passwd 匹配包含mail關(guān)鍵字及其后5行
# grep -B 5 mail passwd 匹配包含mail關(guān)鍵字及其前5行
# grep -C 5 mail passwd 匹配包含mail關(guān)鍵字及其前后5行
二一姿、 cut
cut是列截取工具,用于列的截取
1、語(yǔ)法
# cut 選項(xiàng) 文件名
2叮叹、常見(jiàn)選項(xiàng)
-c: 以字符為單位進(jìn)行分割,截取
-d: 自定義分隔符艾栋,默認(rèn)為制表符\t
-f: 與-d一起使用,指定截取哪個(gè)區(qū)域
3衬横、常見(jiàn)的案例使用
# cut -d: -f1 1.txt 以:冒號(hào)分割裹粤,截取第1列內(nèi)容
# cut -d: -f1,6,7 1.txt 以:冒號(hào)分割,截取第1,6,7列內(nèi)容
# cut -c4 1.txt 截取文件中每行第4個(gè)字符
# cut -c1-4 1.txt 截取文件中每行的1-4個(gè)字符
# cut -c4-10 1.txt 截取文件中每行的4-10個(gè)字符
# cut -c5- 1.txt 從第5個(gè)字符開(kāi)始截取后面所有字符
cut -c1-4 passed.txt #截取文件中每行的1-4個(gè)字符
三蜂林、sed
關(guān)于sed命令的使用遥诉,大家可以搜索網(wǎng)上相關(guān)文章,這里只列舉了部分我工作中常用的用法噪叙。
1矮锈、常見(jiàn)的案例使用
sed -i '1d' filename #刪除文件第一行,-i會(huì)直接修改原文件內(nèi)容
sed -i 'nd' filename #刪除文件第n行
sed -i '$d' #刪除文件最后一行
sed -i '1,5d' filename #刪除文件第1到5五行
sed -i '10,$d' filename # 刪除文件第10到最后一行
sed -i 's/原字符串/替換字符串/' filename #替換文件中的內(nèi)容
sed -i 's/sbin/sbin1204/g' passwd #將文件所有sbin替換成sbin1204
sed -i '1,5s/sbin/sbin1204/g' passwd ##將文件前五行中的sbin替換成sbin1204
四睁蕾、sort
sort工具用于排序苞笨,它將文件的每一行作為一個(gè)單位,從首字符向后子眶,依次按ASCII碼值進(jìn)行比較瀑凝,最后將他們按升序輸出。
1臭杰、語(yǔ)法和選項(xiàng)
-u :去除重復(fù)行
-r :降序排列粤咪,默認(rèn)是升序
-o : 將排序結(jié)果輸出到文件中,類(lèi)似重定向符號(hào)>
-n :以數(shù)字排序,默認(rèn)是按字符排序
-t :分隔符
-k :第N列
-b :忽略前導(dǎo)空格渴杆。
-R :隨機(jī)排序寥枝,每次運(yùn)行的結(jié)果均不同
2、常見(jiàn)的案例使用
# sort -n -t: -k3 1.txt 按照用戶的uid進(jìn)行升序排列
# sort -nr -t: -k3 1.txt 按照用戶的uid進(jìn)行降序排列
# sort -n 2.txt 按照數(shù)字排序
# sort -nu 2.txt 按照數(shù)字排序并且去重
# sort -nr 2.txt
# sort -nru 2.txt
# sort -nru 2.txt
# sort -n 2.txt -o 3.txt 按照數(shù)字排序并將結(jié)果重定向到文件
# sort -R 2.txt
# sort -u 2.txt
五磁奖、tee
tee工具是從標(biāo)準(zhǔn)輸入讀取并寫(xiě)入到標(biāo)準(zhǔn)輸出和文件囊拜,即:雙向覆蓋重定向(屏幕輸出|文本輸入)
1、常見(jiàn)的案例使用
echo hello world|tee file1 # 屏幕打印hello world,并將hello world寫(xiě)入到文件file1
# cat file1
echo 999|tee -a file1 # 屏幕打印999,并將999追加到文件file1
grep -v '^#' passed.txt | grep -v '^$' |tree test1202.txt
六.diff
diff工具用于逐行比較文件的不同
注意:diff描述兩個(gè)文件不同的方式是告訴我們?cè)鯓痈淖兊谝粋€(gè)文件之后與第二個(gè)文件匹配
1比搭、語(yǔ)法
diff [選項(xiàng)] 文件1 文件2
2冠跷、常用選項(xiàng)
-b 不檢查空格
-B 不檢查空白行
-i 不檢查大小寫(xiě)
-w 忽略所有的空格
--normal 正常格式顯示(默認(rèn))
-c 上下文格式顯示
-u 合并格式顯示
七、paste
paste工具用于合并文件行
1身诺、常用選項(xiàng)
-d:自定義間隔符蔽莱,默認(rèn)是tab
-s:串行處理,非并行
2戚长、常見(jiàn)的案例使用
paste file1 file2 #file1 file2按行合并盗冷,分隔符是tab
paste -d: file1 file2 #file1 file2按行合并,分隔符是冒號(hào)
paste -s file1 file2
paste -s -d: file1 file2
八同廉、tr
tr用于字符轉(zhuǎn)換仪糖,替換和刪除柑司;主要用于刪除文件中控制字符或進(jìn)行字符轉(zhuǎn)換。tr工具是一對(duì)一替換,是將匹配中的字符替換為另外一個(gè)字符。
1肋联、常用選項(xiàng)
-d 刪除字符串1中所有輸入字符。
-s 刪除所有重復(fù)出現(xiàn)字符序列玻粪,只保留第一個(gè);即將重復(fù)出現(xiàn)字符串壓縮為一個(gè)字符串
用法1:命令的執(zhí)行結(jié)果交給tr處理诬垂,其中string1用于查詢(xún)劲室,string2用于轉(zhuǎn)換處理
commands|tr 'string1' 'string2' #將string1替換為string2,兩個(gè)程序之間用管道連接起來(lái)
=======================================
用法2:tr處理的內(nèi)容來(lái)自文件结窘,記住要使用"<"標(biāo)準(zhǔn)輸入
tr 'string1' 'string2' < filename #將文件的內(nèi)容作為標(biāo)準(zhǔn)輸入交給tr處理
=======================================
用法3:匹配string1進(jìn)行相應(yīng)操作很洋,如刪除操作
tr [options] 'string1' < filename
2、常見(jiàn)的案例使用
tr 'a-z' 'A-Z' <passed.txt
tr ':/' '#' <passed.txt |head
tr '0-9' '@' <passed.txt |head
tr -d 'a-z' < passed.txt #刪除文件中的小寫(xiě)字母隧枫,不會(huì)修改原文件呢內(nèi)容
tr -d ':/ 0-9' < passed.txt #刪除文件中的數(shù)字喉磁,空格及:和/、
自己現(xiàn)在寫(xiě)文章越來(lái)越不用心了官脓,總覺(jué)得太忙协怒,要把所有時(shí)間用在學(xué)習(xí)上,多總結(jié)多寫(xiě)文章卑笨。