日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

sed,awk,grep,trap,trap,cut,tr,curl,find

發布時間:2025/3/15 编程问答 36 豆豆
生活随笔 收集整理的這篇文章主要介紹了 sed,awk,grep,trap,trap,cut,tr,curl,find 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
  • ^ 行首定位符???????????????

    ^love 匹配所有以love開頭的行

  • $? 行尾定位符

    love$? 匹配所有以love結尾的行

  • . ?單個任意字符

    l..e? 匹配以l開始后跟兩個字符再跟一個e的字符串

  • *? 重復0到多個星號前面的字符

    a* 匹配0個或多個a的字符串

  • []匹配一組字符的任意一個

    [Ll]ove? 匹配Love或love的字符串

  • [x-y]匹配指定范圍的一個字符

    [A-Z]ove? 匹配大寫字符開頭后跟ove的字符串

  • [^]匹配不在指定組內的字符

    [^A-Z]? 匹配不是大寫字母的任意字符

  • \? 轉義字符用來轉義元字符

    love\.? 匹配love后跟一個.的字符

  • !? 取反

  • + 表示一個或多個

    xyz+ 一個或多個z

  • ? 表式0個或一個

    xyz? 0個或一個z

  • RE元字符

  • \< 詞首定位符\<love 匹配love開頭的詞

  • |> 詞尾定位符love\> 匹配love結尾的詞

  • \<bin\> 匹配一個單詞

  • \(..\) 給匹配的字符打上標簽

  • (lov)able\1er/ 模式lov被保存為標簽1用\1表示

    查找一個字符串lov后跟上able,再跟上lov再接上er即:lovablelover

  • x{m}和x{m,}和x{m,n}字符x重復出現:m次,至少m次,至少m次,并不超過n次
    o{5,10} 匹配包含5~10個o的字符串

  • | 或者
    echo "tom and jerry"|sed -r 's/(tom) and (jerry)/\2 and \1/'

    echo "tom g1,g2,g3 jerry"|cut -d" " -f2
    echo "abc def"| sed -r 's/([a-z]+) ([a-z]+)/\2 \1/'
    echo "abc def"| sed -r 's/([a-Z0-9]+) ([a-Z0-9]+)/\2 \1/'
    echo "abcgood"|grep -E "abc(good)*" --color 匹配abc后有一個或多個good的行
    echo "abchidhn"|sed -r 's/(.)(.*)/\1/' 用()切割字符
    echo "abc" |grep -E "abc{3}" {}之前字符c出現的次數為3次
    echo "abc defd xyz"|grep -E "\<[a-Z]{3}\>"匹配有三個字母的
    echo "abc"| grep -E "abc+" --color
    grep -E "^root|^tom" /etc/passwd
    echo "abc user@sina.com.cn def"|grep -E "[a-Z0-9._]+@[a-Z0-9.]+\.[a-Z]{2,3}
    " --color?

  • ps:HOST=$(/bin/hostname)
    將()里的命令執行后的結果賦值給HOST變量


    grep awk sed 是基于正則表達式設計的
    用雙引號將正則表達式引起來

    sed ?循環 一行一行的處理文件
    sed -n '/abc/p' file 默認會打印模式空間的內容
    行中匹配abc的打印出來 ?-r ?支持擴展分割符,-n不讓他默認打印模式空間?


    sed '/abc/p' file1
    讀取file1的第一行到pattern space(臨時緩沖區, 內存)
    對pattern space中的這一行進行/abc/p操作
    將pattern space中的這一行打印出來
    清空pattern space
    讀取file1的下一行到pattern space


    sed root@10.0.2.253 sed 's/abc/def' file ?遠程登錄后修改file里的內容
    sed -n '5p' file 把第五行打印出來

    sed -n '$p' file ?把最后一行打印出來

    sed -n '1,3p' file ?把一到三行打印出來

    sed -n '1,~3p' file ?從第一行開始打印三行

    sed -n ?'1p; 3p' ?file ?打印第一行和第三行

    sed -n '1,/def/p' file 從第一行開始直到碰到def的行全部打印出來


    sed ?-i '3i aaaaaaa' file ?在第三行的前面加上aaaaaaa
    sed? -i '$a ?aaaaa' file ?在最后行加入aaaaa
    sed ?-i '/^tom/i ?aaaaaa' file ?在以tom開頭的行前一行加上aaaaaa


    sed ?-i ?'s/abc/def/' file 改每一行的第一個abc成def
    sed ?-i ?'s/abc/def/g' file 改每一行的所有abc成def
    sed ?-i ?'s/abc/def/3' file 改每一行的第三個abc成def
    sed ?-i ?'1,2s/abc/def/' file 改一到兩行abc成def
    sed ?-i ?'1,2s/^.*$/def/' file 改一到兩行成def
    sed ?-i ? '4c aaaaaaaaa' file ?把第四行改為aaaaaaaa
    sed? -i ?'/^SELINUX/c ?selinux ' 把所有以SELINUX開頭的行改為selinux

    sed ?-i '/^abc/s/tom/jerry/' ?file ?先找到以abc開頭的行將這一行的tom改為jerry

    sed -i '/abc/,/^def/s/123/456/' file ?將abc開頭的行和def開頭的行之間的行的123改為456

    s 換匹配的字段 c換匹配的行


    sed? -i ?'4d' 把第四行刪除
    sed? -i ?'/^tom/d' file 刪除以tom開頭的所有行
    sed? -i ?'/^$/d' file ?刪除空行
    sed? -i ?'/^\s$/d' file ?刪除開頭為空行?? \s表示空格或tab


    sed -i '/^mike/s/^/#' file 將mike行注釋


    sed '3s/abc/def/; 5s/abc/yyy/g' file1
    sed 's/abc/def/; s/hij/xyz/' file1

    sed -i -e '1s/jerry/tom/; ? -e 3s/mike/xyz/' ?file ?多條一起執行用-e


    sed '/ADDR/s/^/#/' file1???? 行首加#
    sed '/ADDR/s/^#//' file1???? 去行首#

    sed -ri /^#ServerName.*:80$/s/^#// /etc/selinux/config
    找出/etc/seliunx/config文件中以#ServerName開頭以:80結尾的行
    并將#替換成空白

    & 保存查找串以便在替換串中引用
    sed 's/tom/&jerry/' file1
    ? ? ? ?
    范圍匹配
    sed '/abc/,/xyz/s/tom/jerry/' file1 abc到xyz中的
    sed '/tom/,/jerry/d' file1
    sed -n '/abc/,/xyz/p' file1
    sed '1,/tom/d' file1 第1行到第1個匹配tom的行

    ? ? ??

    引用變量
    var1="root"
    sed "/$var1/c aixocm" file1


    sed -ri "/IPADDR/s/[0-9.]+/$ip/" ifcfg-eth0

    sed -i "s|^${i}1*|#&|" /etc/fstab
    #------------------------------------------------------------------------
    awk 按行處理行里字段 ?循環命令
    默認以空格作為分割符 默認打印整行$0 -F分割符 ? 制定分割符
    awk ?'BEGIN{print ?"aaaa"}/tom/{print $2}END{print "bbbbbbb"}' ?file1
    先執行BEGIN里的語句 從文件中讀取第一行是否匹配/tom如果有則執行沒有就不執行
    到讀完后,再運行END的語句 ?可以選用BEGIN ?匹配項 ENG。
    awk '/^mike/{print $2}' file
    awk 'NR==2{print $2}' ?file ? ?NR是行號 NF字段數
    awk 'NR==2||NR==4{print $2}' file ? 只讀兩個固定的行號
    awk ?'{print $0}' file ?$0 整個行
    awk 'BENGIN{FS=":" OFS=" ?"}/bash$/{print $0}' file

    FS 指定了分割符

    OFS 指定了輸出的字段分割符
    tr ":" "" 將冒號改為空格
    awk 'BEGIN{i=10;echo$i}'
    awk -v v1=$a -v v2=$b ?'BEGIN{print v1+v2}' ?將bash的值傳給awk
    awk -F: -v v1=$a '$0~v1'{print $0} ~ 匹配條件
    awk ?'BEGIN{i=0;}{i++}END{print i}' file
    awk '/^root/{$3+=10;print $3}' file
    awk '$1~"root"{print $1}' file
    awk '$1==500{print $1}' file ?第一個字段為500
    awk '$NF~"bash"{print $1}' file ?最后一個字段是否有bash
    awk ?'$3>=500&&$3<=503{print $2}' file
    awk ?-F: -v v1=$a '$1~^v1' ?file 打印出以變量a開頭的行
    awk ?-F: '{if($1~/^root/)print $1}' file ? 打印出第一個字段以root開頭的行的第一個字段


    next ?直接讀下一行

    continue

    exit 結束不讀了

    break

    int()整數化

    awk ?'system("useradd" $2)' file ? system()調用系統的命令

    df -Th|grep "/$"|awk '{print $6}'|sed 's/%//'
    df后截取某個字段并替換

    tr 針對字符進行操作,單字符處理工具, 而不是字符串處理工具
    cat file1 | tr "abc" "xyz"
    a都替換成x, b都替換成y, c都替換成z,并不是將字符串abc替換成字符串xyz

    echo "abc 11a22bc" |tr “abc” “xyz” 結果:xyz 11x22yz
    tr "abc" "xyz" ?<file ?處理文件
    tr "a-z" "A-Z" <file ?將小寫字母轉成大寫字母
    tr ":" "\m"
    echo "abdcdd"| tr -d "abc"將abc三個字符刪除
    cat file |tr -d “a-z”
    echo “aaaaaaaaxcxxx cccccccc”|tr -s"abc" 將重復的abc字符壓縮成一個字符

    sort 排序 ?文件沒改變
    默認以空白作為分割符以第一個字段進行排序 (按字符串排asic)
    sort -n file ?以第一個字段的數值排序
    sort -r 倒序
    sort -k2 ?以第二個字段排
    sort -t:以:分割字段
    sort -t: -k3nr /etc/passwd

    注意:先sort再uniq

    uniq 去重復行 不改變文件
    uniq file ?只改變相鄰的重復行
    uniq -c ?顯示相鄰的重復多少行
    uniq -u 只顯示沒有相鄰重復的行
    cut ?分割字符 ?默認分割符為tab鍵
    cut -d: -f1-f3 ?file ?指定分割符為:只要1 ?3字段

    cut -d: -f1,3,5

    echo ?“addfgg” |cut -c3 ?取第三個字符

    grep

    grep -n ”root“ /etc/passwd ?過濾出來加行數
    grep -c ”root“ /etc/passwd ?過濾出來的行號
    grep -v ”root“ /etc/passwd ?取反
    grep -q ”root“ /etc/passwd ?過濾出來的不顯示
    grep -w ”root“ /etc/passwd ?過濾出來有單詞root的行
    grep -o ”root“ /etc/passwd ?過濾出來root單詞
    grep -ro ”root“ 目錄 ? ? 過濾出來目錄中文件里的有root的行
    grep -i ”root“ /etc/passwd ?忽略大小寫
    grep -E ”root“ /etc/passwd ?啟用擴展正則
    grep -f file file1 ? 過濾出file和file1中共同擁有的行
    grep -f file file1 -v ?過濾出file有file1沒有的行
    grep -x ”root“ file ?過濾file中只含有root的的行
    find

    find . -nouser ?把沒有主人的文件找出來
    find ?. ?+size +10000c ?找出文件大于10000個字節的文件
    find / -maxdepth 1 ?-name ?“*.conf” ?-maxdepth ?不會找子文件
    find . -perm ?600 ?把權限為600的找出來
    find . -name “*.sh” ?|xargs ?rm -rf {} 把文件找出后交給rm處理
    find . -name “*.sh” ?|xargs -I{} rm -rf {} ?用-I 指定用什么表示查出的內容4
    trap 屏蔽信號
    trap '' 2 ?屏蔽中斷信號,不做什么
    trap 'ls;pwd;date' 2 當出發中斷信號(ctrl+c) 執行ls;pwd;date;
    trap 2 還原

    curl

    curl -o a.html http://www.sohu.com/index.html 將搜狐的首頁下載下載到a.html
    curl -O ?http://www.sohu.com/index.html 將搜狐的首頁下載下來
    curl -T file ? ftp://10.0.2.253/ 將file文件上傳到10.0.2.253中 ?用ftp協議

    轉載于:https://blog.51cto.com/menglinux/1437330

    總結

    以上是生活随笔為你收集整理的sed,awk,grep,trap,trap,cut,tr,curl,find的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。