網站地圖 | RSS訂閱 老鐵博客 - 上海SEO優化|上海網站建設|蜘蛛池出租|站群代搭建
你的位置:首頁 ? 前端腳本 ? 正文

sed命令,linux下sed命令

2020-7-15 13:53:24 | 作者:老鐵SEO | 0個評論 | 人瀏覽

  在shell中輸入下面的命令,輸出是什么


  echos/\^/,/g


  輸出是s/^/,/g,在shell中反斜杠本身就有轉義的作用,因此不加雙引號實際執行的命令是


  sed"/^/,/g"file>file1即在文本開頭添加一個逗號


  加上雙引號\^在傳給sed之前才不會被轉義成^


  關于Linux里的sed命令。


  Sedisanondestructiveeditor.Itwilldisplaytheeditsyoumakeonyourscreen,butitwillnotchangethefileyouareediting.Toreallyreflecttheeditsinthefile,youmustredirecttheoutputtoanotherfile,andthenrenametheorginalfile


  sed的特點就是非破壞(nondestructive),流水行(streamlined),非交互(noninteractive)的編輯器。


  非破壞就是指不會修改原文件,它會將修改的結果標準輸出到屏幕上,你如果想保存,需要使用IO重定向的方式保存:


  如:


  sed‘s/home/home1’1.txt>2.txt


  這樣做的原因是,如果你修改了原文件的話,你沒法使用word,vim,txt的undo功能撤銷修改,恢復原來的文件。所以,sed會將修改之后的文件輸出到屏幕,你看到修改滿意的話,再重定向到其他文件。就完成了修改。明白否?


  -e是啟用多行命令上述兩條編輯命令都是一行命令,所以看不出效果。


  linux指令sed指令怎么選擇列


  首先我這邊先建一個字母大小轉換的腳本test2.sh,內容如下:


  先介紹些sed-n的應用:


  sed命令中p能實現打印匹配行的功能。我們可以實際看下sed命令帶-n和不帶-n情況下有什么不同。


  sed-n"1p"test2.sh:帶-n選項的話,只打印test2.sh腳本第一行匹配行。


  sed"1p"test2.sh:不帶-n的話,不僅打印第一行匹配行,還打印輸出test2.sh腳本的全部內容。


  sed-n還可以打印文件的范圍,比如打印test2.sh腳本的前兩行,我們就可以執行以下命令:sed-n"1,2p"test2.sh,就可以直接打印前兩行。


  sed命令可以打印匹配模式行,比如打印test2.sh腳本匹配tr的行,就可以執行以下命令:


  sed-n/tr/ptest2.sh。


  remark:如果不帶-n的話,除了打印匹配行外,還會打印腳本的全部內容。


  sed-e的應用。只有當sed命令傳遞多個編輯命令式,才會使用到-e。比如:我想打印/tr/匹配行,并且打印匹配行所在的行號,此時存在多個sed參數,就要用到-e了。


  sed-n-e/tr/p-e/tr/=test2.sh


  每個參數前都要帶上-e:


  seda\追加命令,命令格式為:sed’指定地址a\追加內容‘目標文件


  這個追加內容在匹配行的下一行,只會輸出到標準輸出,原文件內容是不變的,例如在test2.sh腳本的/tr/所在的匹配行的下一行添加“#hello”內容,可需要執行:


  sed'/tr/a\#hello'test2.sh


  一定不要忘記單引號.


  還有一個sedi\的追加命令,命令格式為:sed’指定地址i\追加內容‘目標文件,跟a\不同,i\追加是在指定位置的上一行追加命令


  sed命令中還有一些特殊的匹配,比如元字符匹配,此時需要用轉義符"\"屏蔽其特殊意義。


  比如:sed-n‘/\=/p’test2.sh,則打印輸出tr一行。


  $在正則表達式中表示尾行,執行sed-n‘$p’test2.sh則打印腳本尾行。


  !表示取反,可以看以下兩個例子


  sed中可以使用關鍵字來匹配行,打印我們所需要的內容,比如,我希望打印test2.sh第2,3行,可以執行:sed-n"2,3P"test2.sh,也可以執行sed-n"/tr/,/exit/p"test2.sh


  sedc\的應用,命令格式為:sed’指定地址c\替換內容‘目標文件。比如,#hello,替換test2.sh腳本的tr這行,可以執行命令:sed'/tr/c\#hello'test2.sh


  sed刪除d應用:比如我想刪除test2.sh的第2行,可以執行以下命令:sed"2d"test2.sh或者sed/tr/dtest2.sh


  sed替換s應用:格式seds/被替換的字符/替換字符/[替換選項]


  比如,我想把test2.sh中tr替換成大寫的tr,則可以執行以下命令:sed‘s/tr/TR/’test2.sh,則把腳本中的tr替換成TR,完后輸出全部內容。


  如果僅想打印替換所在行,則需要試用使用-n和-p:sed-n‘s/tr/TR/p’test2.sh:把腳本中的tr替換成TR,然后打印tr所在的行.


  如果腳本中存在好幾個tr,并且每一行也存在多個tr,如果執行以上命令的話,只會更改每一行的第一個出現的tr,如果要全部把tr轉后為TR,則需要添加G參數:


  sed-n’S/tr/TR/pg’test2.sh。


  w參數是定向輸入參數,比如要把上述的變更定向輸出到test1.txt中,則需要執行:


  sed-n’s/tr/TR/pgwtest1.txt’test2.sh。


  也可以直接把選定的匹配內容寫到另一個文本中,比如想把test2.sh中tr這一樣寫到test2.txt中,執行:sed-n’/tr/wtest2.txt‘test2.sh


  sed命令學習


  1,++a[$1]是awk中的數組,awk中的數組允許使用字符標示,


  比如讀第一行,是a[aaaa](值為1),讀第二行(只為2),此時觸發條件判斷語句,就是你的第二個問題了


  2,awk中語法conditionalexpression1?expression2:expression3


  表示條件成立則返回expression2,否則返回expression3


  這里v?v","$1:$1,v最初為空,第一句時返回aaaa


  以后不為空,例如當a[$1]再次為2時就返回,pppp


  以此下去,最后就是結果了~~

  • 本文來自: 老鐵博客,轉載請保留出處!歡迎發表您的評論
  • 相關標簽:
  • 已有0位網友發表了一針見血的評論,你還等什么?

    必填

    選填

    記住我,下次回復時不用重新輸入個人信息

    必填,不填不讓過哦,嘻嘻。

    ◎歡迎參與討論,請在這里發表您的看法、交流您的觀點。

    相關推薦

    色情激情片日本大全