sed實戰,有你想要的!持續更新……

簡介:

sed是一種流編輯器,它是文本處理中非常中的工具,能夠完美的配合正則表達式使用,功能不同凡響。處理時,把當前處理的行存儲在臨時緩衝區中,稱爲“模式空間”(pattern space),接着用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往屏幕。接着處理下一行,這樣不斷重複,直到文件末尾。文件內容並沒有 改變,除非你使用重定向存儲輸出。Sed主要用來自動編輯一個或多個文件;簡化對文件的反覆操作;編寫轉換程序等。

實戰一:

將如下內容:

rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508143915_1.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508143915_2.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508143915_3.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508144007_1.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508144007_2.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508144007_3.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508144007_4.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508144124_1.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508145510_1.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508145511_2.jpg

轉換成:

rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508143915_1.jpg /data/www/uploads/allimg/130508/153_130508143915_1.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508143915_2.jpg /data/www/uploads/allimg/130508/153_130508143915_2.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508143915_3.jpg /data/www/uploads/allimg/130508/153_130508143915_3.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508144007_1.jpg /data/www/uploads/allimg/130508/153_130508144007_1.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508144007_2.jpg /data/www/uploads/allimg/130508/153_130508144007_2.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508144007_3.jpg /data/www/uploads/allimg/130508/153_130508144007_3.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508144007_4.jpg /data/www/uploads/allimg/130508/153_130508144007_4.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508144124_1.jpg /data/www/uploads/allimg/130508/153_130508144124_1.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508145510_1.jpg /data/www/uploads/allimg/130508/153_130508145510_1.jpg
rsync -azvP /data/wwwpicbak/uploads/allimg/130508/153_130508145511_2.jpg /data/www/uploads/allimg/130508/153_130508145511_2.jpg

需求解析:

rsync同步需要源目兩個目錄,原內容最後一列即爲源目錄(/data/wwwpicbak/uploads/allimg/130508/153_130508143915_1.jpg),現在需要增加一個目標目錄(/data/www/uploads/allimg/130508/153_130508143915_1.jpg),注意源目錄中的“wwwpicbak”變成“www”,其他不變。

實戰操作

步驟:先複製最後一列,再替換字符

cat FILENAME | sed 's/\(\/.*$\)/\1 \1/' | sed 's/wwwpicbak/www/2'

sed實戰,有你想要的!持續更新……

實戰講解

sed編輯器用圓括號來定義替換模式中的子模式。你可以在替代模式中使用特殊字符來引出每個子模式。替代字符由反斜線和數字組成。數字表明子模式的位置。sed編輯器會給第一個子模式分配字符\1,給第二個子模式分配字符\2,以此類推。

來看一個在sed編輯器腳本中使用這個特性的例子。

# echo "The System Administrator manual" | sed 's/\(System\) Administrator/\1 User/'
The System User manual
#

這個替換命令用一對圓括號將單詞System括起來,將其標示爲一個子模式。然後它在替代模式中使用 \1 來提取第一個匹配的子模式。這沒什麼特別的,但在處理通配符模式時卻特別有用。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章