linux文件操作命令--转
引用地址:http://bbsunchen.iteye.com/blog/1010993
想自己一開始處理文件的時候,看文件有多少行,都要寫個perl腳本,好不麻煩啊...以此文紀念自己傻逼的科研生活
linux 文本操作命令
1. cat 查看文件中的內容, -n 查看時為每一行加編號;
-b 和-n類似,只不過對于空白行不編號;
2. head file 顯示文件頭的內容,默認顯示10行,加 -n 可以顯示指定的行數;
3. tail file 顯示文件尾的內容,默認顯示10行,加 -n 可以顯示指定的行數;
tail -n 20 file 顯示文件后20行;
tail -f /var/log/messages 實時顯示系統的日志信息;
more file 分屏顯示文件的內容;
less file 分屏顯示文件的內容,在more的基礎上可以上下翻頁;
4. diff 比較兩個文件內容的不同,報告文件的差異;
-b 忽略文件中空格造成的不同 -B 忽略文件中空行造成的不同;
-l 忽略文件中的大小寫造成的不同;
例如:diff file1 file2 ; diff -B file1 file2 ;
5. uniq 出除文件中重復的行; uniq file 可以將文件file中相臨的重復行去除;
6. wc 用來統計文本中的行數,詞數,字數;
-l 用來統計行數;
-w 用來統計詞數;
-c 用來統計字數;
wc -l /etc/passwd 可以統計passwd文本中的行數
linux 下 讀取某個文件的某一行或者某幾行
查看文件song.txt的第190行到196行,?
sed -n '190,196p' song.txt?
如果查看某一行用?
sed -n '190,1p' song.txt即可?
sed -n 'a,bp' song.txt讀取自第a行到第b行的數據?
if(a > b ) return 第a行
Find命令和Sed命令詳解
命令格式:?
find pathname -options 【-print -exec -ok】?
?? pathname? find 命令所查找的目錄路徑;?
?? -print? 將匹配的文件輸出到標準輸出;?
?? -exec? 對匹配的文件執行該參數所給的shell命令,命令格式給‘command’ {} \;{}和\;之間有空格;?
?? -ok? 和-exec的作用相同,只是以更安全的模式來執行參數,但執行每個命令前都會給用戶提示是否執行;?
?? -options 命令參數?
??? -name 按照文件名查找文件;?
??? -perm 按照文件權限查找文件;?
??? -prune 使用該命令使find命令不在當前指定目錄中查找,如果同時使用-depth選項,它將被find忽略;?
??? -user 按照文件屬主查找;?
??? -group 按文件屬組查找;?
??? -mtime -n +n 按照文件的更改時間查找,-n表示文件更改時間距現在n天以內,?
???????????????????????????????????????? +n表示文件更改時間距現在n天以前;?
??? -nogroup 查找無有效所屬組的文件,即該文件所屬的組不在/etc/group?
??? -nouser? 查找無有效屬主的文件,即該文件所在的主不在/etc/passwd;?
??? -newer file1 ! file2? 查找更改時間比文件file1新但比文件file2舊的文件;?
? -type 查找某一類型的文件?
??? b? 塊設備文件?
??? d? 目錄?
??? c 字符設備文件?
??? p 管道文教案?
??? l? 符號鏈接文件?
??? f 普通文件?
實例:1、使用ls -l命令列出所匹配到的文件?
?? #find 。 -type f -exec ls -l {} \;?
??? 2、刪除/logs目錄中更改時間在5日以前的文件?
?? #find logs -type f -mtime +5 -exec rm {} \;?
?? 該命令在執行的時候直接刪除匹配的文件,安全性不高;?
?? #find logs -type f -mtime +5 -exec -ok rm {} \;?
?? 該命令在執行的時候會提示用戶是否要刪除該文件,按Y刪除文件,N不刪除該文件。?
??? 3、使用find命令查找passed文件中是否包含user1用戶;?
?? #find /etc -name “passwd*” -exec grep “user1” {} \;?
??? 4、查找當前目錄中文件屬主有讀寫權限,并且屬組和其他用戶有讀權限;?
????? #find . -type f -perm 644 -exec ls -l {} \;?
??? 5、查找系統中所有文件長度為0的不同文件,并列出它的路徑;?
????? #find / -type f -size 0 -exec ls -l {} \;?
??? 6、查找當前文件系統中所有目錄并排序;?
????? # find . -type d |sort?
??? 7、刪除當前目錄中訪問時間在7天以前的文件,并且含有三個數字后綴的log文件?
????? #find . -name “admin.log[0-9][0-9][0-9]” -atime -7 -ok rm {} \;?
二、xargs命令詳解?
???? 在使用find的命令時-exec選項處理匹配文件的信息,但是有些系統文件對exec的命令長度有限制,?
? 在運行命令幾分鐘后,可能出現溢出錯誤信息,通常的錯誤信息為“參數列太長”或“參數列溢出”,這時候用sargs?
? 就可以解決該問題。?
?? find命令把匹配到的文件傳遞給xargs命令,而xargs命令每次只獲取一部分文件而不是全部,這樣就可以處理?
? 最先獲取的一部分文件,然后是剩余的并繼續下去。?
實例:1、查找系統中的每個普通文件,然后用xargs命令測試它們分別屬于那類文件;?
?? #find . -type f -print | xargs file?
??? 2、把內存信息轉儲問(core dump),然后把結果保存到/tmp/core.log文件中;?
????? #find / -name “core” -print | xargs echo “” >/tmp/core.log?
??? 3、查找當前目錄下所有用戶具有讀、寫和執行權限的文件,并收回其他用戶的寫權限;?
????? #find . -perm -7 -print | xargs chmod o-w;?
??? 4、搜索當前目錄下所有普通文件中包含hostname的字符;?
???? #find . -type f -print | xargs grep “hostname”或?
???? #find . -name \* -type f -print | xargs grep “hostname”?
??? 5、查找/apps目錄下的文件,但不查找/apps/bin目錄下查找;?
???? #find /apps -path “/apps/bin” -prune -o -print?
三、sed命令詳解?
???? sed用法 sed是一個非交互性文本流編輯器,它編輯文件或標準輸入導出的文件拷貝。可以在命令行輸入sed命令,?
也可以在一個文件中寫入命令,在使用sed時,sed并不于初始化文件打叫道,它操作的只是一個拷貝,然后所有的改動?
如果沒有重定向到一個文件,將輸出到屏幕。因為sed是一個非交互性編輯器,必須通過行號或正規表達式指定要改變?
的文本行。?
1、sed怎么讀取數據:sed從文件的一個文本行或從標準輸入的幾種格式中讀取數據,將之拷貝到一個編輯緩沖區,然后?
讀命令行或腳本的第一命令,并使用這些命令查找模式或定位行號編輯它,重復此過程命令結束。?
2、調用sed:調用sed有三種方式在命令行鍵入命令;將sed命令插入腳本文件,然后調用sed;將sed命令插入腳本文件,?
并使sed腳本可執行。?
??? 2.1sed命令格式:?
?? sed [選項] sed命令輸入文件???????? 【命令行在使用sed時,實際命令要加單引號。sed也允許加雙引號】?
?? sed [選項] -f sed腳本文件輸入文件?
?? sed選項如下:?
??? n 不打印? 【sed不編輯行到標準輸出,缺省為打印所有的行】?
??? p 命令可以用來打印編輯行?
??? c 下一命令是編輯命令,使用多項編輯時加入此選項,如果只用到一條sed命令,此選項無用,但指定它也沒有關系?
??? f 如果正在sed腳本文件,使用此選項,此選項通知sed一個腳本文件支持所有的sed命令?
???? sed -f myscript.sed? input_file??? 【myscript.sed即為支持sed命令的文件】?
??? 2.2保存sed輸出?
??? 由于不接觸初始化文件,如果想要保存改動內容,簡單地將所有輸出重定向到一個文件即可,例如:?
??? #sed ’some-sed-commands‘ input-file >myoutfile?
??? 2.3使用sed在文件中查詢文本的方式?
??? sed瀏覽輸入文件時,缺省從第一行開始,有兩種方式定位文本?
???? 1.使用行號,可以是一個簡單數字或一個行號范圍?
???? 2.使用正規表達式?
??? 使用sed定位文本的一些方式:?
???? x (x為行號,如1?
???? x,y (表示行號范圍從x到y行,如2,5表示從第2行到第5行?
???? /pattern/ (查詢包含模式的行。如/disk/或/[a-z]/?
???? /pattern/pattern/ (查詢包含兩個模式的行,例如/disk/disks/?
???? /pattern/ ,x? (在給定行號上查詢包含模式的行。例如/ribbon/,3?
???? x,/pattern/??? (通過行號或模式查詢匹配行。例如3,/vcd/?
???? x,y!查詢不包含指定行號x和y的行。例如1,2!?
? 2.4基本sed編輯命令?
???? p 打印匹配行?
???? = 顯示文件行號?
???? a\? 在定位行號后附加新文本信息?
???? i\ 在定位行號后插入新文本信息?
??????? d 刪除定位行?
???? c\ 用新文本替換定位文本?
???? s 使用替換模式替換相應模式?
???? r 沖另一個文件中讀取文件?
???? w 寫文本到一個文件?
???? q 第一個模式匹配完成后推出或立即推出?
???? | 顯示與八進制ASCII代碼等價的控制字符?
???? {} 在定位執行的命令組?
???? n 從另一個文件中讀文本下一行,并附加在下一行?
???? g 將模式2粘貼/pattern n/?
???? y 傳送字符?
???? n 延續到下一輸入行;允許跨行的模式匹配語句。?
?? sed識別任何基本正規表達式和模式及其匹配規則,如果要定位一特殊字符,必須使用(\)屏蔽其特殊含義?
? 例如:1.打印第2行?
??? #sed -n ‘2p’ temp.txt?
???? 2.打印指定范圍,打印1到3行,用逗號分割符號?
??? #sed -n ‘1,3p’ temp.txt?
???? 3.使用行號和模式結合使用,顯示temp.txt最后一行中的單詞the,?
??? # sed -n ‘/the/p’ temp.txt?
???? 4.使用模式與行號的混合方式剔除第一行,和格式為line_number,/pattern/。都好用來分隔行號?
???? 與模式開始部分,為了達到預期結果,使用4,/the/。意思只在第四行查詢模式the。?
??? #sed -n ‘4,/the/p’ temp.txt?
???? 5.匹配元字符$前,必須使用反斜杠\屏蔽特殊含義。模式為/\$/p?
??? #sed -n ‘/\$/p’ temp.txt?
???? 6.顯示整個文件,只需將行號范圍設為第一行到最后一行1,$。$意為最后一行。?
??? #sed -n ‘1,$P’ temp.txt?
???? 7.顯示任意字符,匹配任意字符,后跟任意字符的0次或多次重復,并以ing結尾?
????? #sed -n ‘/.*ing/p’ temp.txt?
???? 8.打印匹配的的字符并顯示該行行號?
????? #sed -e ‘/music/=’? temp.txt?
???? 9.在匹配的字符串后插入新的字符串,使用附加操作即使位置,a\,a\通知sed這是一個附加操作?
????? #sed? “/abcd/a\ABCD” temp.txt?
???? 10.替換文本 替換命令用替換模式指定模式,格式為?
??? [address[,address]] s/pattern-to-find/replacerment-pattern/[gpwn]?
??? s選項通知sed這是一個替換操作,并查詢pattern-to-find,成功后replacement-pattern替換它。?
????? g: 缺省情況下只替換第一次出現模式,使用g選項替換全局所有出現模式。?
????? p: 缺省sed將所有被替換寫入標準輸出,加p選項將使-n選項無效;?
????? n: 不打印輸出結果;?
????? w: 文件名使用此選項將輸出定向到一個文件?
??? 例如:替換night為NIGHT,首先查詢night,然后用文本NIGHT替換它?
???? #sed ‘s/night/NIGHT/’ temp.txt
轉載于:https://www.cnblogs.com/davidwang456/p/3578347.html
總結
以上是生活随笔為你收集整理的linux文件操作命令--转的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HTTP Referer二三事---转
- 下一篇: Linux服务器集群系统(一)--转