shell_03進階操作

來源:互聯網
上載者:User

shell_03進階操作 文本的進階操作: wc -c-l-w diff --查看兩個檔案間不同地方,對比兩個檔案。 -b 忽略空格引起的不同 -i 忽略大小寫 -B 忽略插入空格引起的變化 sort --排序 -r 反向 -n 以數字來排序 -u 去除結果中的重複行 -t 指定分隔字元 -k 指字的列 -o    將輸出寫到指定的檔案,相當於將輸出重新導向到指定檔案 -c 測試檔案是否已經被排序 -m  合并兩個已排序的檔案 uniq --去除重複行 -c 統計重複的行數有幾行 -i 忽略大小寫 -d 只顯示重複的行 -u 只顯示沒有重複的記錄    cut --可以去除行間指定字元段   -d 指定分隔字元 -f 指定列 -c 字元的序號  c1-100  join命令用於實現兩個檔案中記錄的串連操作,串連操作將兩個檔案中具有相同域的記錄選擇出來,再將這些記錄所有的域放到一行(包含來自兩個檔案的所有域)  -a1或-a2 除了顯示以共同域進行串連的結果外,-a1表示還顯示第1個檔案中沒有共同域的記錄,-a2則表示顯示第2個檔案中沒有共同域的記錄-i 比較域內容時,忽略大小寫差異-o 設定結果顯示的格式-t 改變域分隔字元-v1或-v2 跟-a選項類似,但是,不顯示以共同域進行串連的結果      paste --合并兩個檔案-d 預設域分隔字元是空格或Tab鍵,設定新的域分隔字元-s 將每個檔案粘貼成一行- 從標準輸入中讀取資料  # ls | paste -d" " - - - - -                      split 用於將大檔案切割成小檔案,split命令可以按照檔案的行數、位元組數切割檔案,並能在輸出的多個小檔案中自動加上編號  -或-l 此兩個選項等價,都用於指定切割成小檔案的行數-b 指定切割成小檔案的位元組-C 與-b選項類似,但是,切割時盡量維持每行的完整性# split -l50 /etc/passwd# split -b1000 /etc/passwd  sb  tr --替換,只能接受輸入重新導向的檔案流-d 冊除某個指定的字串-s 刪除所有重複出現的字元序列,只保留一個  # tr -s '[\n]' < AREACODE.db 將重複出現的分行符號壓縮成一個 BEIJING:86010HONGKONG:852SHANGHAI:86021TORONTO:001416#tr -d A-Z < AREACODE.db  刪除所有大寫字元#tr -d "[\n]" < AREACODE.db 刪除所有分行符號   \b 退格符 \r 斷行符號鍵 \t tab鍵# cat testWooooomennnnTTTTheyyyy#tr -s "[a-z],[A-Z]" < test 將所有重複字元壓縮成一個字元#tr -s  "[a-z]" "[A-Z]" < test 將所有小寫換成大寫#tr "[o*5]" "@" < test 將檔案連續出現5次o字元改成@字元  # tr -d 'A-Z' < AREACODE.db  | grep -v ^$ | tee dbn.out &> /dev/null &&  tr -d ':' < dbn.out # cut -d: -f2 AREACODE.db | grep -v '^$'  tee --雙向重新導向 -a 追加# who | tee who.out      Regex(regex) --用於文本精確匹配第一類Regex:(1).: 代表任意單個字元,除了分行符號(2)*: 前置字元出現 0 次 或 多次(3).*: 任意長度的字元(4)^: 行的開頭(5)$: 行的結尾(6)^$: 空行(7)[abc] 以字元為單位的或關係(8)[a-z]   [A-Z]   [0-9](9)[^abc] 取非(10)^[abc] a或b或c開頭的行(11)^[^abc] 非a或非b或非c開頭(12)\<: 取單詞的頭(13)\>: 取單詞的尾  --擴充類的Regex(14)+: 1次或多次(15)?: 0次或1次  (16)\<\> 精確匹配符號   (17)\{n\} 匹配前面字元出現n次   (18)\{n,\} 匹配前面字元至少出現n次   (19)\{n,m\} 匹配前面字元出現n次與m次之間   第二類Regex(POSIX標準):[[:digit:]]: 數字 [[:lower:]]: 小寫字母[[:upper:]]: 大寫字母[[:space:]]: 空格 [[:alnum:]]: 字母數字    支援Regex工具(軟體):grep/egrep find locate sed awk vim  grep 'regex' file --把Regex寫在單引號中,防止shell解釋Regexgrep -E 'regex' file --匹配擴充的Regex在grep中需要加-E選項egrep=grep -E  # find / -regex '.*\.iso$'# find / -regex '^\/var.*\.iso$'  locate -r# locate -r '^\/var.*\.iso$'    sed -n '/^root/p' /etc/passwd  awk '/^root/ {print $0}' /etc/passwd  vim/^root/nologin$:%s/^root/ROOT/g  grep o:只列印匹配出來的字元n:顯示行號v:取反l:匹配成功,列印檔案c:統計匹配到的字元的數量,但是統計的是行數,而不是匹配的字元個數A:匹配行後幾行B:匹配行前幾行C:匹配行前後幾行,  如    -C 2   與   -2i:忽略大小寫q:靜默執行,一般在測試時,取傳回值用r/R:對一個目錄下的所有檔案進行搜尋--color:用特殊顏色標示匹配到的關鍵字H: 列出匹配到關鍵字的檔案路徑  egrep:拓展正則搜尋egrep = grep -E    # cat grep.txt gglegoglegooglegoooglegaglegaaglegaaagleabcgef  abcdef  操作如下:grep 'g.g' grep.txt --只要兩個g字母中間有一個任一字元就可以grep 'g*g' grep.txt --只要有一個g字母就可以。等同於grep g grep.txtgrep 'go*g' grep.txt   --只要兩個g字母中間有零個o或多個o就可以 grep 'g.*g' grep.txt --只要兩個g字母中間有零個或任意個字元就可以grep 'go.*g' grep.txt --只要go與g字母中間有零個或任意個字元就可以  /etc/passwdgrep ^...t /etc/passwd --尋找每行裡第四個字元為t的行grep o.....$ /etc/passwd --尋找每行裡倒數第六個字元為o的行grep s..n /etc/passwd --尋找每行裡有s和n字元,並且中間有兩個字元的行grep x:4: /etc/passwd --尋找uid為4的行(只使用grep和Regex,不使用cut或awk的截取)grep .*:.:4:.*:.*:.*:.* /etc/passwd --尋找uid裡是4的行grep .*:.:.*4.*:.*:.*:.*:.* /etc/passwd --尋找uid裡包括4的行grep .*:.*:.*:.*::.*:.* /etc/passwd --尋找/etc/passwd裡注釋列為空白的行grep -v .*:.*:.*:.*::.*:.* /etc/passwd --尋找/etc/passwd裡注釋列不為空白的行grep .*:.*:.*:.*:..*:.*:.* /etc/passwdgrep .*:[!x].*:.*:.*:.*:.*:.*:.*:.* /etc/shadow  --尋找不能在登入介面用密碼正常登入的使用者grep root /etc/passwd -- 過濾關鍵字grep '^root' /etc/passwd   -- 以 root 開頭的行grep 'bash$' /etc/passwd   -- 以 bash 結尾的行grep '^$' /etc/passwd   -- 尋找空行grep '^[ru]' /etc/passwd   -- r 或  ugrep '[0-9]' /etc/passwd   -- 尋找數字grep '^[^abc]' /etc/passwd   -- 取反,非 a 非 b 非 c 開頭grep '\<root\>' /etc/passwd   --  \< 取單詞的頭,\> 取單詞的尾grep -E '^root|^zhang' /etc/passwd  --color  -- 拓展正則 ,  -E,匹配以root 或 zhang 開頭grep -n root /etc/passwd   -- 帶行號過濾grep -oE '(([0-9]{1,3}\.){3}[--9]{1,3})' /var/log/secure--在文本過濾IP地址  grep [[:digit:]] /etc/passwd grep [[:lower:]] /etc/passwd grep [[:upper:]] /etc/passwd grep [[:space:]] /etc/passwd grep [[:alnum:]] /etc/passwd   find find dir1 dir2... [options]...find /etc/ -maxdepth 1 : -- 最大深度find /etc/ -maxdepth 1 -type d|f|s|b|c|l : -- 最大深度 + 檔案類型find /etc/ -type f -name "passwd" -ls : -- find /etc/ -type f -user user01 -group group01: -- 按照使用者和所屬組搜尋find /etc/ -type f -perm 644 : -- 按照許可權進行搜尋find /etc/ -type f -perm +640: -- +號表示或關係find /etc/ -type f -perm -640: -- -號表示與關係       0代表忽略 +-號時代表空,find /bin -type f -perm +4000 -ls: -- 尋找帶有  suid 許可權的檔案find . -type f -size +5M -a -size -8M: -- 大於 5 M 小於 8M 的檔案find . -type f -size -5M -o -size +8M: -- 小於 5 M 大於 8M 的檔案find . -type f -size 1M -ok rm {} \;    : -- 互動模式刪除find . -type f -size 1M -exec rm {} \;  : -- 不互動模式刪除  正則:# cd /etc# find . -maxdepth 1 -regex '\./.*d$' # find . -maxdepth 1 -regex '\./h.*d$'# find . -maxdepth 1 -regex '\./.*[0-9].*' --尋找/etc目錄下的檔案名稱中包含有數位檔案  -type-name-size-perm-user  -group-maxdepth N-mtime:-exec  -ok  -o -a -not-regex 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.