歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
Linux教程網 >> Linux基礎 >> Linux教程 >> Linux 字符操作命令集錦

Linux 字符操作命令集錦

日期:2017/2/28 14:55:10   编辑:Linux教程
cut\grep\awk\sort\sed\head\tail\cat\paste\wc\uniq\diff\patch\tr 第一扣取列 1.#cut -d: -f 1,3,4 file 選項:-d 定義分隔符 -f 指定扣取的列的位置 #cut -c0-6 file 選項:-c 定義扣取從開頭算起的6個字符 第二截取行 2.#grep -i -v "^system" file 選項: -i 表示忽略大小寫 -v 表示不包括 -n 表示顯示結果所在行號 -E 表示支持擴展的正則表達式 ^ 表示以“system”開頭 $ 表示以“關鍵字”結尾 ^$ 表示空行 . 表示一個任意字符 * 表示前一個字符重復任意次 [] 匹配可能得字符 #grep -Ev '^#|^$' /etc/postfix/main.cf 關鍵字:以 #開始或(|)空行--------其中 “|” 需要-E 參數的支持 #grep -E [0-9]abc$ :關鍵字表示--以"abc"結尾且之前有一個數字 [0-9]\{11} :關鍵字表示--11位數字 [0-9]{1,3} : 關鍵字表示--1-3位數字 #egrep 是擴展功能的grep 例: egrep '2|5' 1.txt 列出還有2或5的行 egrep '33(2|5)' 1.txt 列出包含33,而且後邊跟的是2或者5的行 #grep 進階 grep -h select * 列出當前目錄下所有包含select關鍵字的行 grep -l select * 列出當前目錄下所有包含select關鍵字的文件名 -----------------------------正則表達式 第三文件內容提取 3.#awk -F --------用於文件內容分段提取 如:顯示系統中UID=0的用戶名 #awk -F :'$3==0{print $1}'/etc/passwd 如顯示系統中密碼為空的用戶名 #awk -F : 'length($2)==0 {print $1}' /etc/shadow #awk '{print $9}' 當沒有指定分隔符時,默認以空格分隔,且多個連續空格會認為是一個空格。 查看/etc 目錄中屬主是 root 的文件名稱 # ll /etc | awk '{if ($3=="root") print $9}' awk引用變量 # awk '$1== " '$a ' " {print $0} ' file.txt ########################################## -----需要注意:當用if判斷時 條件在{}中 當不用if判斷是 條件在‘’內,{}外 ################################################ 條件表達: awk -F: '{ if ($3>499) print $1}' /etc/passwd awk -F: '{ if ($3==500) print $1}' /etc/passwd awk -F: '{ if (length($2)==0) print $1 }' /etc/passwd awk -F: '{ if ($1=="'$a'") print $1}' /etc/passwd 例:扣取文件名 [root@localhost /]# ll | awk '{print $9}' ----注意:wak中的判斷 “==” 等於 ; “=”賦值 ----awk 引用變量(使用選項 -v) 例: # awk '$1== " '$a ' " {print $0} ' file.txt #!/bin/bash read -p "please input the UID :" uid awk -F : -v ID=$uid ' $3==ID {print $1}' /etc/passwd 第四排序 4.#sort -t : -k 3 -nruf file 選項:-t 定義分隔符 -k 指定比較的列的位置 -n 以數值的方式比較 例3 和14 比較:如果有-n 則14>3 ,如果沒有-n,則以字符方式比較3>1‘4’(比較首字母) -r 反向排序 默認是升序,即由小到大 -u 刪除重復行 --uniq -f 排序時忽略大小寫 第五統計 5.#wc -l -w file 選項:-l 統計行數 -w 統計單詞數 第六比較 6.#diff file1 file2 > patch.txt 生成補丁文件 #patch file1(舊文件) < patch.txt 為老版本文件打補丁 第七、字符替換 7.#tr “原有字符” “目標字符” file #tr "a-z" “A-Z” file ---------tr 用於單個字符的替換 第八、流文件編輯器---sed(不是交換模式,可用於腳本中的配置文件修改) 語法: sed [選項] 'script' file -------script 是能夠被sed理解的命令 ,包含:‘<行描述><動作>’ -------file 是cmd進行操作的一些文件 #sed -ire ' s/替換前內容/替換後內容/g' file
選項-i 修改源文件並保存。沒有改選項時,修改後內容顯現都屏幕上,但是源文件並沒有改變 -r 支持擴展的正則表達式(用以支持比較復雜的正則表達式) -e 以選項中指定的script來處理輸入的文本文件(此處的腳本 ” s“)
script 結構 :'行描述[/正則表達式/]動作' 例:刪除 # sed '5d' filename 刪除第5行,顯示其他行 #sed '1,3d' filename 刪除1-3行,顯示其它行 #sed '4,$d' filename 刪除從第4行到末行,顯示其它行 替換 #sed 's/222/333/g' filename 將所有的222取代為333 轉換 #sed '1,3y/[a-z]/[A-Z]/' filename -------正則表達式 . --用於匹配任意一個字符 * --用於匹配它前面字符的任意多次 ^ --用於匹配行首 $ --用於匹配行尾 [char] --用於匹配括號字符集中的某一個字符 []:匹配符 {} :枚舉 [^char] --用於匹配沒有在char字符集中的字符 \ --用於轉義某個特殊含義的字符 \<the\> --用於完整匹配單詞“the”,不會匹配“them”,"there","other" /^$/ 表示空行 /^.*$/ 表示一整行 /*/ 表示一個或多個空格 [0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\}\.[0-9]\{1,3\} 表示ip地址 --------動作 -s 替換指定內容#sed -e -i 's/defaults/hello/g' /etc/file -d 刪除指定行 #sed -i -e '1,3d' /etc/file (刪除1--3行) #sed -e -i '/^#/d' /etc/file (刪除以#開頭的行) -i 匹配行前插入 -a 匹配行後附加 -c 匹配行替換
Copyright © Linux教程網 All Rights Reserved