1.catnode
功能:鏈接文件和標準輸出打印linux
語法:cat [OPTION]... [FILE]...sql
經常使用選項:docker
-A:查看全部,至關於-vET選項,能夠列出特殊字符shell
-b:打印非空行行號vim
-E:顯示結尾的斷行字節$windows
-n:打印全部行號centos
-T:將tab鍵以^I顯示出來bash
-v:顯示非打印字符,也就是特殊字符oracle
示例:
[root@localhost tmp]# cat /etc/issue CentOS release 6.6 (Final) Kernel \r on an \m [root@localhost tmp]# tac /etc/issue Kernel \r on an \m CentOS release 6.6 (Final) 說明:cat跟tac打印效果不同,一個是正序顯示,一個是倒敘顯示 同時打印輸出兩個文件內容: [root@localhost ~]# cat test1 test2 welcome to shell world this is centos 6.6 [root@localhost ~]# cat test1 welcome to shell world [root@localhost ~]# cat test2 this is centos 6.6 新建文件並添加內容: [root@localhost ~]# cat > 1 寫完按ctrl+c結束保存 1 2 3 4 ^C [root@localhost ~]# cat 1 1 2 3 4 [root@localhost ~]# cat > 2 << EOF 這樣寫是當輸入完成時,輸入EOF就是結束文檔添加內容,並保存 > 1234 > this is > EOF
2. tac
功能:鏈接文件和倒序打印文件
語法: tac [OPTION]... [FILE]...
經常使用選項
跟cat差很少
示例上面已經有了
3.more
功能:crt模式看文件瀏覽過濾
語法:more [-dlfpcsu] [-num] [+/pattern] [+linenum] [file ...]
用法:
須要按鍵操做瀏覽過程
空白鍵 (space):向下翻一頁;
Enter:向下翻一行;
/字串:在這個顯示的內容當中,向下搜尋字串這個關鍵字;
f:快速翻頁
q:退出more瀏覽
說明:more雖然能夠瀏覽比cat更多的文件內容,但有缺點,不能往上翻頁,只能往下翻頁,直到結束。
4.less
功能:更多顯示跟瀏覽
按鍵操做:
空白鍵:向下翻動一頁;
[pagedown]:向下翻動一頁;
[pageup]:向上翻動一頁;
/字串:向下搜尋字串的功能;
?字串:向上搜尋字串的功能;
n:重複前一個搜尋 (與 / 或 ? 有關!)
N:反向的重複前一個搜尋 (與 / 或 ? 有關!)
q:對出less瀏覽
5.head
功能:輸出文件的開頭部分
語法:head [OPTION]... [FILE]...
經常使用選項:
-n:接數字,顯示到前幾行
示例:
不接參數默認顯示前10行
[root@localhost ~]# head /etc/passwd root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin adm:x:3:4:adm:/var/adm:/sbin/nologin lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin sync:x:5:0:sync:/sbin:/bin/sync shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown halt:x:7:0:halt:/sbin:/sbin/halt mail:x:8:12:mail:/var/spool/mail:/sbin/nologin uucp:x:10:14:uucp:/var/spool/uucp:/sbin/nologin [root@localhost ~]# head /etc/passwd|wc -l 10 [root@localhost ~]# head -n 3 /etc/passwd #打印前三行 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin [root@localhost ~]# head -3 /etc/passwd #直接帶數字也是能夠的 root:x:0:0:root:/root:/bin/bash bin:x:1:1:bin:/bin:/sbin/nologin daemon:x:2:2:daemon:/sbin:/sbin/nologin
6.tail
功能:輸出文件的最後部分
語法:tail [OPTION]... [FILE]...
經常使用選項:
-n:接數字,從最後開始顯示到幾行
-f:動態打印文件信息,後邊接數字,ctrl+c結束
示例:默認顯示後10行
[root@localhost ~]# tail /etc/passwd gopher:x:13:30:gopher:/var/gopher:/sbin/nologin ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin nobody:x:99:99:Nobody:/:/sbin/nologin dbus:x:81:81:System message bus:/:/sbin/nologin vcsa:x:69:69:virtual console memory owner:/dev:/sbin/nologin saslauth:x:499:76:Saslauthd user:/var/empty/saslauth:/sbin/nologin postfix:x:89:89::/var/spool/postfix:/sbin/nologin sshd:x:74:74:Privilege-separated SSH:/var/empty/sshd:/sbin/nologin ntp:x:38:38::/etc/ntp:/sbin/nologin yyl:x:500:500::/home/yyl:/bin/bash [root@localhost ~]# tail -n 1 /etc/passwd yyl:x:500:500::/home/yyl:/bin/bash [root@localhost ~]# tail -1 /etc/passwd yyl:x:500:500::/home/yyl:/bin/bash
7.cut
功能:截取命令
語法:cut OPTION... [FILE]...
經常使用選項:
-b 以字節爲單位進行分割
-c:以字符爲單位進行分割
-d:自定義分隔符,默認爲製表符
-f:與-d一塊兒使用,指定顯示那個區域
-n:取消分割多字節字符,和-b一塊兒使用
[root@localhost test]# who root pts/1 2017-05-26 18:36 (192.168.19.1) root pts/2 2017-05-27 09:32 (192.168.19.1) [root@localhost test]# who |cut -b 3 #以字節分隔,顯示第三個字節 o o [root@localhost test]# who |cut -c 3 #以字符分隔,顯示第三個字符,每一個字母便是字節,又是字符 o o [root@localhost test]# who |cut -d" " -f 1 root root [root@localhost test]# who |cut -n -b 1-4 root root [root@localhost test]# ifconfig eth1 |grep Bcast|cut -d":" -f 2 |cut -d" " -f 1 #生產示例,分割打印ip地址 192.168.19.20
8.split
功能:切割文件
語法: split [OPTION]... [INPUT [PREFIX]]
經常使用選項:
-<行數>或-l<行數> 指定每多少行就要切成一個小文件。
-b<字節> 指定每多少字就要切成一個小文件。支持單位:m,k
-C<字節> 與-b參數相似,但切割時儘可能維持每行的完整性。
-d 以數字爲後綴
-a length 指定數字後綴的長度
--help 顯示幫助。
示例:
[root@localhost test]# cat split1 this is line1 this is line2 this is line3 this is line4 this is line5 this is line6 按每一個文件1行分割,並按字母順序命名文件 [root@localhost test]# split -1 split1 [root@localhost test]# ll total 36 -rw-r--r-- 1 root root 84 May 27 14:35 split1 -rw-r--r-- 1 root root 14 May 27 14:35 xaa -rw-r--r-- 1 root root 14 May 27 14:35 xab -rw-r--r-- 1 root root 14 May 27 14:35 xac -rw-r--r-- 1 root root 14 May 27 14:35 xad -rw-r--r-- 1 root root 14 May 27 14:35 xae -rw-r--r-- 1 root root 14 May 27 14:35 xaf [root@localhost test]# cat xaa this is line1 [root@localhost test]# cat xab this is line2
9.paste
功能:合併文件
語法:
經常使用選項:
經常使用選項:
-d 指定分隔符,默認是tab鍵
-s 將文件內容平行,tab鍵分隔
示例:
[root@localhost test]# cat name.txt town.txt M.Golls 12 Hidd Rd P.Heller The Acre P.Willey 132 The Grove T.Norms 84 Connaught Rd K.Fletch 12 Woodlea M.Golls Norwich NRD P.Willey Galashiels GDD T.Norms Brandon BSL K.Fletch Mildenhall MAF K.Firt Mitryl Mdt [root@localhost test]# paste name.txt town.txt #跟join有區別,join是相同的只顯示一個,最paste所有顯示 M.Golls 12 Hidd Rd M.Golls Norwich NRD P.Heller The Acre P.Willey Galashiels GDD P.Willey 132 The Grove T.Norms Brandon BSL T.Norms 84 Connaught Rd K.Fletch Mildenhall MAF K.Fletch 12 Woodlea K.Firt Mitryl Mdt [root@localhost test]# paste -s name.txt town.txt #一行顯示了 M.Golls 12 Hidd Rd P.Heller The Acre P.Willey 132 The Grove T.Norms 84 Connaught Rd K.Fletch 12 Woodlea M.Golls Norwich NRD P.Willey Galashiels GDD T.Norms Brandon BSL K.Fletch Mildenhall MAF K.Firt Mitryl Mdt [root@localhost test]# paste -d"\n" name.txt town.txt 合併並換行顯示 M.Golls 12 Hidd Rd M.Golls Norwich NRD P.Heller The Acre P.Willey Galashiels GDD P.Willey 132 The Grove T.Norms Brandon BSL T.Norms 84 Connaught Rd K.Fletch Mildenhall MAF K.Fletch 12 Woodlea K.Firt Mitryl Mdt
10.sort
功能:文本文件排序
語法:sort [OPTION]... [FILE]...
sort [OPTION]... --files0-from=F
經常使用選項:
-b 忽略每行前面開始的空格字符。
-c 檢查文件是否已按順序排序。
-d 排序時,處理英文字母、數字及空格字符外,忽略其餘的字符
-f 忽略大小寫
-M 根據月份比較排序,如:DEC FEb
-h 單位換算,也叫人性化顯示
-n 數字比較排序
-o 將結果輸出到文件
-t 指定分隔符
-k n,m 根據關鍵字排序,從第n字段開始,m字段結束
-r 倒序排序
-u 去重複行
-T 指定臨時文件目錄,默認在/tmp+<起始欄位>-<結束欄位> # 以指定的欄位來排序,範圍由起始欄位到結束欄位的前一欄位。
默認是對整列排序,依照ASCII值比較
示例:
[root@localhost test]# cat seq.txt banana apple pear orange [root@localhost test]# sort seq.txt apple banana orange pear [root@localhost test]# seq 5 |shuf 3 2 4 5 1 [root@localhost test]# seq 5 |shuf|sort 1 2 3 4 5 -t -k -n選項 [root@localhost scripts]# cat oldboy.txt 48 Oct 3bc1997 lpas 68.00 lvx2a 138 484 Jan 380sdf1 usp 78.00 deiv 344 483 nov 7pl1998 usp 37.00 kvm9d 644 320 aug der9393 psh 83.00 wiel 293 231 jul sdf9dsf sdfs 99.00 werl 223 230 nov 19dfd9d abd 87.00 sdiv 230 219 sept 5ap1996 usp 65.00 lvx2c 189 216 Sept 3zl1998 usp 86.00 kvm9e 234 [root@localhost scripts]# sort -t " " -k 5 -n oldboy.txt 483 nov 7pl1998 usp 37.00 kvm9d 644 219 sept 5ap1996 usp 65.00 lvx2c 189 48 Oct 3bc1997 lpas 68.00 lvx2a 138 484 Jan 380sdf1 usp 78.00 deiv 344 320 aug der9393 psh 83.00 wiel 293 216 Sept 3zl1998 usp 86.00 kvm9e 234 230 nov 19dfd9d abd 87.00 sdiv 230 231 jul sdf9dsf sdfs 99.00 werl 223 -r選項 [root@localhost scripts]# seq 5 |sort -r 5 4 3 2 1 -u選項 [root@localhost test]# cat seq.txt banana apple pear orange pear orange [root@localhost test]# sort -u seq.txt #去重複並排序 apple banana orange pear -0選項 [root@localhost test]# sort -r seq.txt >> seq1.txt [root@localhost test]# cat seq1.txt pear pear orange orange banana apple [root@localhost test]# sort -u seq.txt -o seq2.txt [root@localhost test]# cat seq2.txt apple banana orange pear -n選項 sort排序有時候回到10比2小的狀況,這是由於怕排序先比較1和2,顯然1小,就將10放在2的前面了。 [root@localhost test]# cat number.txt 1 10 19 11 2 5 [root@localhost test]# sort number.txt #按字符排序 1 10 11 19 2 5 [root@localhost test]# sort -n number.txt 1 2 5 10 11 19 sort -n # 按數字排序 sort -nr # 按數字倒敘 sort -u # 過濾重複行 sort -m a.txt c.txt # 將兩個文件內容整合到一塊兒 sort -n -t' ' -k 2 -k 3 a.txt # 第二域相同,將從第三域進行升降處理 sort -n -t':' -k 3r a.txt # 以:爲分割域的第三域進行倒敘排列 sort -k 1.3 a.txt # 從第三個字母起進行排序 sort -t" " -k 2n -u a.txt # 以第二域進行排序,若是遇到重複的,就刪除
11.uniq
功能:去除重複行
經常使用選項:
-c 打印出現的次數,只能統計相鄰的
-d 只打印重複行
-u 只打印不重複行
-D 只打印重複行,而且把全部重複行打印出來
-f n 忽略第n個字段
-i 忽略大小寫
-s n 忽略前N個字符
-w 比較不超過前N個字符
示例:
[root@localhost test]# cat seq.txt banana apple pear orange pear orange [root@localhost test]# sort seq.txt apple banana orange orange pear pear [root@localhost test]# sort seq.txt|uniq apple banana orange pear [root@localhost test]# sort seq.txt|uniq -c #打印重複的次數 1 apple 1 banana 2 orange 2 pear [root@localhost test]# sort seq.txt|uniq -u #打印不重複行 apple banana [root@localhost test]# sort seq.txt|uniq -d #打印重複行 orange pear [root@localhost test]# sort seq.txt|uniq -d -c #打印重複行並出現的次數 2 orange 2 pear [root@localhost test]# sort seq.txt|uniq -w 1 #根據字符去重 apple banana orange pear
12.wc
功能:統計文件行數、字節、字符數
經常使用選項:
-c 打印文件字節數
-m 打印文件字符數
-l 打印多少行
示例:
[root@localhost test]# wc -l /etc/passwd 22 /etc/passwd [root@localhost test]# wc -c /etc/passwd 973 /etc/passwd [root@localhost test]# wc -m /etc/passwd 973 /etc/passwd
13.iconv
功能:將文件內容字符集轉成其餘字符集
經常使用選項:
-l 列出全部已知的編碼字符集
-f 編碼原始文本
-t 輸出的編碼格式
-o 輸出到文件
-s 不輸出警告
示例:
將文件內容轉換UTF8: # iconv -f gbk -t utf8 old.txt -o new.txt 將csv文件轉換GBK: # iconv -f utf8 -t gbk old.txt -o new.txt 解決郵件亂碼: # echo $(echo "content" | iconv -f utf8 -t gbk) | mail -s "$(echo "title" | iconv -f utf8 -t gbk)" dst@163.com
14.dos2unix/unix2dos
功能:dos2unix是將Windows格式文件轉換爲Unix、Linux格式的實用命令。Windows格式文件的換行符爲\r\n ,而Unix&Linux文件的換行符爲\n. dos2unix命令其實就是將文件中的\r\n 轉換爲\n。而unix2dos則是和dos2unix互爲孿生的一個命令,它是將Linux&Unix格式文件轉換爲Windows格式文件的命令。
語法格式:dos2unix [options] [-c convmode] [-o file ...] [-n infile outfile ...]unix2dos [options] [-c convmode] [-o file ...] [-n infile outfile ...]
此命令參數是Red Hat Enterprise Linux Server release 5.7下dos2unix命令參數,不一樣版本Linux的dos2nnix命令參數有可能不一樣。
參數 |
長參數 |
描敘 |
-h |
顯示命令dos2unix聯機幫助信息。 |
|
-k |
保持文件時間戳不變 |
|
-q |
靜默模式,不輸出轉換結果信息等 |
|
-V |
顯示命令版本信息 |
|
-c |
轉換模式 |
|
-o |
在源文件轉換,默認參數 |
|
-n |
保留本來的舊檔,將轉換後的內容輸出到新檔案.默認都會直接在原來的文件上修改, |
示例:
1: 查看dos2unix命令的幫助信息 [root@DB-Server myscript]# man dos2unix [root@DB-Server myscript]# dos2unix -h dos2unix Copyright (c) 1994-1995 Benjamin Lin Copyright (c) 1998 Bernd Johannes Wuebben (Version 3.0) Copyright (c) 1998 Christian Wurll (Version 3.1) Usage: dos2unix [-hkqV] [-c convmode] [-o file ...] [-n infile outfile ...] -h --help give this help -k --keepdate keep output file date -q --quiet quiet mode, suppress all warnings always on in stdin->stdout mode -V --version display version number -c --convmode conversion mode convmode ASCII, 7bit, ISO, Mac, default to ASCII -l --newline add additional newline in all but Mac convmode -o --oldfile write to old file file ... files to convert in old file mode -n --newfile write to new file infile original file in new file mode outfile output file in new file mode 2: dos2unix filename 將Windows格式文本轉換爲Unix&Linux格式文件 1: [root@DB-Server myscript]# cat -v test.sh 2: . /home/oracle/.bash_profile^M 3: echo ' '^M 4: date^M 5: echo ' '^M 6: ^M 7: sqlplus test/test @/home/oracle/scripts/test.sql^M 8: ^M 9: echo ' '^M 10: date^M 11: echo ' '^M 12: [root@DB-Server myscript]# dos2unix test.sh 13: dos2unix: converting file test.sh to UNIX format ... 14: [root@DB-Server myscript]# cat -v test.sh 15: . /home/oracle/.bash_profile 16: echo ' ' 17: date 18: echo ' ' 19: 20: sqlplus test/test @/home/oracle/scripts/test.sql 21: 22: echo ' ' 23: date 24: echo ' ' 3: dos2unix 能夠一次轉換多個文件 1: dos2unix filename1 filename2 filename3 4: 默認狀況下會在源文件上進行轉換,若是須要保留源文件,那麼可使用參數-n dos2unix -n oldfilename newfilename 1: [root@DB-Server myscript]# dos2unix -n dosfile linuxfile 2: dos2unix: converting file dosfile to file linuxfile in UNIX format ... 3: [root@DB-Server myscript]# cat -v dosfile 4: it is a windows dos file^M 5: you should convert to unix&linux format^M 6: [root@DB-Server myscript]# cat -v linuxfile 7: it is a windows dos file 8: you should convert to unix&linux format 9: [root@DB-Server myscript]# clip_image001 5:保持文件時間戳不變 1: [root@DB-Server myscript]# ls -lrt dosfile 2: -rw-r--r-- 1 root root 67 Dec 26 11:46 dosfile 3: [root@DB-Server myscript]# dos2unix dosfile 4: dos2unix: converting file dosfile to UNIX format ... 5: [root@DB-Server myscript]# ls -lrt dosfile 6: -rw-r--r-- 1 root root 65 Dec 26 11:58 dosfile 7: [root@DB-Server myscript]# dos2unix -k dosfile 8: dos2unix: converting file dosfile to UNIX format ... 9: [root@DB-Server myscript]# ls -lrt dosfile 10: -rw-r--r-- 1 root root 65 Dec 26 11:58 dosfile 6:靜默模式格式化文件 1: [root@DB-Server myscript]# unix2dos -q dosfile 3: [root@DB-Server myscript]# dos2unix的下載地址爲http://sourceforge.net/projects/dos2unix/ ,能夠從上面下載最新版本的dos2unix、unix2dos等命令工具以及相關文檔
15.diff
功能:逐行比較兩個文本文件,列出其不一樣之處
語法格式:diff [options] file1 file2
經常使用選項:
-a:將全部文件看成文本文件來處理。
-b或–ignore-space-change 忽略空格形成的不一樣。
-B或–ignore-blank-lines 忽略空行形成的不一樣。
-c:使用綱要輸出格式。
-H:利用試探法加速對大文件的搜索。
-I:忽略大小寫的變化。
-n –rcs:輸出RCS格式。
-N或–new-file 在比較目錄時,若文件A僅出如今某個目錄中,會顯示:Only in目錄;文件A若使用-N參數,則diff會將文件A與一個空白的文件比較。
-r或–recursive 比較子目錄中的文件。
-u,-U<列數>或–unified=<列數> 以合併的方式來顯示文件內容的不一樣。
示例:
diff /usr/xu mine 把目錄/usr/xu 中名爲mine的文件與當前目錄中的mine文件進行比較。 [root@localhost scripts]# cat 1.txt 1 2 3 4 5 6 7 8 9 10 [root@localhost scripts]# cat 2.txt 7 8 9 10 11 12 13 14 15 [root@localhost scripts]# diff 1.txt 2.txt 1,6d0 < 1 < 2 < 3 < 4 < 5 < 6 10a5,9 > 11 > 12 > 13 > 14 > 15
16.vimdiff
功能:比較兩個及以上文件的差別
語法格式:vimdiff [options] file1 file2 [file3 [file4]]
示例:
[root@localhost scripts]# vimdiff 1.txt 2.txt
2 files to edit
圖形化比較文件跟vim -o 1.txt 2.txt相似
4.17.rev
功能:反向打印文件的每一行
經常使用選項:
示例:
[root@localhost ~]# cat 123 123 my name is yyl [root@localhost ~]# tac 123 #上下反轉 my name is yyl 123 [root@localhost ~]# rev 123 #:左右反轉 321 lyy si eman ym
18.join
功能:鏈接兩個文件
語法: join [OPTION]... FILE1 FILE2
經常使用選項:
-a <1或2> 除顯示原來輸出的內容外,還顯示指定文件中沒有相同的欄位,默認不顯示
-i 忽略大小寫
-o 按照指定文件欄位顯示
-t 使用字符做爲輸入和輸出字段分隔符
-1 鏈接文件1的指定欄位
-2 鏈接文件2的指定欄位
示例:
[root@localhost test]# cat name.txt town.txt #一個是名字和街道地址,一個是名字和城鎮 M.Golls 12 Hidd Rd P.Heller The Acre P.Willey 132 The Grove T.Norms 84 Connaught Rd K.Fletch 12 Woodlea M.Golls Norwich NRD P.Willey Galashiels GDD T.Norms Brandon BSL K.Fletch Mildenhall MAF K.Firt Mitryl Mdt [root@localhost test]# join name.txt town.txt #合併兩個文件 M.Golls 12 Hidd Rd Norwich NRD P.Willey 132 The Grove Galashiels GDD join: file 1 is not in sorted order join: file 2 is not in sorted order T.Norms 84 Connaught Rd Brandon BSL K.Fletch 12 Woodlea Mildenhall MAF
19.tr
功能:替換或刪除字符,能夠說是sed的簡化
命令格式:tr [OPTION]... SET1 [SET2]
經常使用選項:
-c 保留SET1的字符,其餘都替換爲SET2,字符爲ASCII
-d 刪除SET1中全部字符
-s 刪除SET1中重複出現的字符
-t 將SET1用SET2轉換,默認
字符範圍指定set1或set2的內容時,只能使用單字符或字符串範圍或列表。
[a-z] a-z內的字符組成的字符串。
[A-Z] A-Z內的字符組成的字符串。
[0-9] 數字串。
\octal 一個三位的八進制數,對應有效的ASCII字符。
[O*n] 表示字符O重複出現指定次數n。所以[O*2]匹配OO的字符串。
tr中特定控制字符的不一樣表達方式
速記符含義八進制方式
\a Ctrl-G 鈴聲\007
\b Ctrl-H 退格符\010
\f Ctrl-L 走行換頁\014
\n Ctrl-J 新行\012
\r Ctrl-M 回車\015
\t Ctrl-I tab鍵\011
\v Ctrl-X \030
示例:
[root@localhost test]# cat xaa |tr -c s 2 #除過s之外的全部字符串空格都替換爲2了 222s22s2222222 [root@localhost test]# cat xaa |tr -d s #刪除了s字符再打印 thi i line1 [root@localhost test]# echo 111111222223333565656 |tr -s '[0-9]' #只有相鄰重複的纔會刪除 123565656 [root@localhost test]# echo 111111222223333565656 |tr -s '[0-9]' '[a-z]' #去重複在替換 bcdfgfgfg [root@localhost test]# echo 111111222223333565656 |tr -t '[0-9]' '[a-z]' bbbbbbcccccddddfgfgfg 其餘示例: 一、將文件file中出現的"abc"替換爲"xyz": # cat file | tr "abc" "xyz" > new_file 【注意】這裏,凡是在file中出現的"a"字母,都替換成"x"字母,"b"字母替換爲"y"字母,"c"字母替換爲"z"字母。而不是將字符串"abc"替換爲字符串"xyz"。 二、使用tr命令「統一」字母大小寫 (小寫 --> 大寫) # cat file | tr [a-z] [A-Z] > new_file (大寫 --> 小寫) # cat file | tr [A-Z] [a-z] > new_file 三、把文件中的數字0-9替換爲a-j # cat file | tr [0-9] [a-j] > new_file 四、刪除文件file中出現的"Snail"字符 # cat file | tr -d "Snail" > new_file 【注意】這裏,凡是在file文件中出現的'S','n','a','i','l'字符都會被刪除!而不是牢牢刪除出現的"Snail」字符串。 五、刪除文件file中出現的換行'\n'、製表'\t'字符 # cat file | tr -d "\n\t" > new_file 不可見字符都得用轉義字符來表示的,這個都是統一的。 六、刪除「連續着的」重複字母,只保留第一個 # cat file | tr -s [a-zA-Z] > new_file 七、刪除空行 # cat file | tr -s "\n" > new_file 八、刪除Windows文件「形成」的'^M'字符 # cat file | tr -d "\r" > new_file 或者 # cat file | tr -s "\r" "\n" > new_file 【注意】這裏-s後面是兩個參數"\r"和"\n",用後者替換前者 九、用空格符\040替換製表符\011 # cat file | tr -s "\011" "\040" > new_file 十、把路徑變量中的冒號":",替換成換行符"\n" # echo $PATH | tr -s ":" "\n"
20.vi/vim
vi和vim:文本編輯器(加強版vi,如今基本各類linux版本都帶有vim)
一、vi編輯器是全部類unix下的標準編輯器。
二、vim是vi的升級版本,大部分類unix系統都默認安裝了vim編輯器
三、vim具備程序編輯能力,能夠經過顏色來辨別語法的正確性,方便程序設計
vim工具三種模式:
1,通常普通模式:底行模式(末行模式)
2,編輯模式(插入模式):i I o O a A r R
3,命令行模式: : / ?
移動相關:
--ctrl+b 向上翻頁 = page up
--ctrl+f 向下翻頁= page down
--ctrl+d 向下移動半頁
--ctrl+u 向上移動半頁--Ctrl+ww 在窗口間切換--Ctrl+w +or-or= 增減高度
--G 移動到頁末 =shift +g
--gg 移動到頁頭
--0 移動到行頭 = home
--$ 移動到行末 = end
--n (表明數字)+回車 向下移動N行
--h 向左移動
--l 向右移動
--k 向上移動
--j 向下移動
gconf-editor 配置編輯器
/etc/vimrc 配置文件路徑
vim +24 file 打開文件定位到指定行
vim file1 file2 打開多個文件
vim -O2 file1 file2 垂直分屏
vim -on file1 file2 水平分屏
:sp filename # 上下分割打開新文件
:vs filename # 左右分割打開新文件
:set nu # 打開行號
:set nonu # 取消行號
:nohl # 取消高亮
:set paste # 取消縮進
:set autoindent # 設置自動縮進
:set ff # 查看文本格式
:set binary # 改成unix格式
:200 # 跳轉到200 1 文件頭
dd # 刪除當前行 並複製 可直接p粘貼
11111dd # 刪除11111行,可用來清空文件
r # 替換單個字符
R # 替換多個字符
u # 撤銷上次操做
* # 全文匹配當前光標所在字符串
$ # 行尾
0 # 行首
X # 文檔加密v = # 自動格式化代碼
Ctrl+v # 可視模式
Ctrl+v I ESC # 多行操做
Ctrl+v s ESC # 批量取消註釋
刪除,複製,粘貼
--x 向後刪除一個字符 = delete
--X 往前刪除一個字符 = backspace
--dd 直接刪除光標所在行ndd (n表明數字,刪除n行)
--yy 複製光標所在行nyy(n表明數字,複製n行)
--p 粘貼
--u 回退上一次操做 按一次u只能回退一次,一直按u,撤銷到文件最後一次保存的狀態 |ctrl+r 撤銷撤銷
--ctrl+r 重作上一次操做
進入編輯模式:
i 當前insert
I 行頭insert
a 向後一個字符insert
A 行末insert
o 下一行insert
O 上一行insert
r 替換光標所在的字符
R 從光標處向後一直替換
ESC 從編輯模式回退到通常模式
查找與替換:
-- /word 查找單詞 n 向下查找 N 向上查找
-- :1,$s/old/new/g 從第一行到最後一行都用new替換old
--:%s/root/hello 替換每一行第一次出現的關鍵字
--:%s/root/uplook/g 全文搜索替換
--:%s/root/uplook/gc 交互式搜索替換
--:11s/nologin/haha/g 在指定行搜索替換
-- :%s/old/new/g 從第一行到最後一行都用new替換old
-- :n1,n2s/old/new/g 從n1行到n2行用new替換old
-- :1,$s/old/new/gc從 第一行到最後一行都用new替換old,多加了一個c就能夠要求用戶確認哪些換哪些不換
--/關鍵字 n向下匹配|N向上匹配
--?關鍵字 n向上匹配|N向下匹配
若是搜索的關鍵字裏有特殊字符:
自定義分割符:
--:%s#/sbin/nologin#hello#g
反斜槓進行轉義:
--:%s/\/bin\/bash/\/sbin\/nologin/g
--:w /tmp/aaa.txt 文件另存爲
--:1,5w 888.txt 保存文件的前5行
--:r filename 讀取另外一個文件的內容到當前文件(默認光標所在行的下面)
--:set nu 顯示行號(臨時)
--:n(表明數字)+回車直接把光標定位到n行
--:w保存 (write)
--:q退出(quit)
--:wq保存並退出 =shift+zz
--+!表示強制保存或者退出
若是你但願vim打開時默認就有行號,能夠這樣作
# vim /etc/vimrc
--set number --在這個配置文件空的地方加上這一句就能夠了
--:set number 或者 : set nu 把每一行都加上行號
--:set nonumber 或者 : set nonu去掉每一行前的行號
總結:
vim file——>命令行模式(yy/p/P/u/dd/G/gg..)——>編輯模式(i/I/a/A/o/O/r/R)——>底行模式(按「Esc」——>退出到命令行模式——>再按冒號「:」|搜索替換等)
21.nl
功能:打印文件行號
語法: nl [OPTION]... [FILE]...
經常使用選項:
-b 指定行號顯示方式,主要有兩種:
-b a:不管是否爲空行,一樣列出行號(同cat -n)
-b t:空行不打印行號。
-n:行號列出方法,主要有三種:
-n ln:左對齊
-n rn:右對齊,不加0
-n rz:右邊顯示,加0
-w : 行號欄位在左邊佔用的寬度
示例:
[root@docker-node5 ~]# nl /etc/issue 1 \S 2 Kernel \r on an \m [root@docker-node5 ~]# nl -b a /etc/issue 1 \S 2 Kernel \r on an \m 3 [root@docker-node5 ~]# nl -b t /etc/issue 1 \S 2 Kernel \r on an \m [root@docker-node5 ~]# nl -n ln /etc/issue 1 \S 2 Kernel \r on an \m [root@docker-node5 ~]# nl -n rn /etc/issue 1 \S 2 Kernel \r on an \m [root@docker-node5 ~]# nl -n rz /etc/issue 000001 \S 000002 Kernel \r on an \m [root@docker-node5 ~]# nl -w 5 /etc/issue 1 \S 2 Kernel \r on an \m [root@docker-node5 ~]# nl -w 1 /etc/issue 1 \S 2 Kernel \r on an \m [root@docker-node5 ~]# nl -w 2 /etc/issue 1 \S 2 Kernel \r on an \m
22.nano
功能:簡單文件編輯器
下面介紹下用法,具體功能本身體會,我本人喜歡用vim
用法:
光標控制
移動光標:使用用方向鍵移動。
選擇文字:按住鼠標左鍵拖到。
複製、剪貼和粘貼
複製一整行:Alt+6
剪貼一整行:Ctrl+K
粘貼:Ctrl+U
選定複製:先ctrl+6或alt+a標記開始,而後光標移至要複製或剪切的末尾,alt+6複製,ctrl+k剪貼,若要取消,再按一次ctrl+6
搜索:Ctrl+W
翻頁:
Ctrl+Y到上一頁
Ctrl+V到下一頁
保存:Ctrl+O
退出:Ctrl+X
23.gedit
功能:文本編輯器
瞭解便可,文本編輯仍是vim強大
快捷鍵:
CTRL-Z:撤銷
CTRL-C:複製
CTRL-V:粘貼
CTRL-T:縮進
CTRL-Q:退出
CTRL-S:保存
CTRL—R:替換
CTRL+Tab 切換
CTRL+W 關閉選項卡
24.seq
功能:打印數字序列
語法:seq [OPTION]... LAST
seq [OPTION]... FIRST LAST
seq [OPTION]... FIRST INCREMENT LAST
經常使用選項:
-f 使用printf樣式格式
-s 指定分隔符,默認換行符\n
-w 等寬,用0填充
示例:
數字序列: 方法1: [root@localhost ~]# seq 10 1 2 3 4 5 6 7 8 9 10 方法2: for循環 #!/bin/bash for i in `seq 1 10`; do echo $i; done 或者用 for i in $(seq 1 10) 方法3: 經過指定步長,所謂步長就是一步之長 [root@localhost ~]# seq 1 5 20 #這裏的步長就是5 1 6 11 16 方法4: [root@localhost ~]# seq 20 30 #指定範圍 20 21 22 23 24 25 26 27 28 29 30 -f選項: #seq -f"%3g" 9 11 9 10 11 % 後面指定數字的位數 默認是"%g", "%3g"那麼數字位數不足部分是空格 #sed -f"%03g" 9 11 這樣的話數字位數不足部分是0 % 前面制定字符串 seq -f "str%03g" 9 11 str009 str010 str011 -w選項: 不能和-f一塊兒使用 [root@localhost ~]# seq -w -f"str%03g" 9 11 seq: format string may not be specified when printing equal width strings Try `seq --help' for more information. [root@localhost ~]# seq -w 1 20 #數字前面帶0 01 ............... 20 -s選項: [root@localhost ~]# seq -s" " -f"str%03g" 9 11 #空格分隔 str009 str010 str011 [root@localhost ~]# seq -s"+" 1 10 #+號分隔 1+2+3+4+5+6+7+8+9+10 [root@localhost ~]# seq -s"\t" 1 10 #有正則的這樣寫雖然打印了,可是違背了題意 1\t2\t3\t4\t5\t6\t7\t8\t9\t10 [root@localhost ~]# seq -s "$(echo -e "\t")" 1 10 #這樣寫纔會達到效果。製表符爲分隔打印 1 2 3 4 5 6 7 8 9 10 [root@localhost ~]# seq -s "$(echo -e "\n")" 1 10 12345678910 [root@localhost ~]# seq -s "$(echo -e "\n\n")" 1 10 #兩個效果同樣 12345678910 12345678910 批量建立文件: 方法1: [root@localhost ~]# awk 'BEGIN { while (num < 10 ) printf "dir%03d\n", ++num ; exit}' | xargs mkdir #使用awk來獲取文本 [root@localhost ~]# ls anaconda-ks.cfg dir003 dir006 dir009 install.log.syslog dir001 dir004 dir007 dir010 system.sh dir002 dir005 dir008 install.log 方法2: [root@localhost ~]# mkdir $(seq -f 'dir%03g' 1 10) 方法3: for i in `seq -f '%02g' 1 20` do if ! wget -P $HOME/tmp -c [img]http://www.xxxsite.com/photo/$i.jpg[/img] ; then wget -P $HOME/tmp -c $_ fi done 方法4: [victor@localhost ~]$ seq -s ' > > ' 1 5 1 2 3 4 5 \t 便得改變IFS, 如用\t\t OIFS=$IFS IFS="\t\t" seq -s `echo -e $IFS` 1 5 IFS=$OIFS
25.shuf
功能:生成隨機序列
經常使用選項:
-i 輸出數字範圍
-o 結果寫入文件
示例:
輸出範圍隨機數: [root@localhost ~]# seq 10 1 2 3 4 5 6 7 8 9 10 [root@localhost ~]# seq 10|shuf 3 7 4 6 8 9 5 10 2 [root@localhost ~]# shuf -i 1-10 10 5 2 7 9 8 4 1 6 3