1. 程式人生 > >Linux Sed命令詳解+如何替換換行符"\n"(很多面試問道)

Linux Sed命令詳解+如何替換換行符"\n"(很多面試問道)

Sed
Sed是一個強大的文字處理工具
可以採用正則匹配,對文字進行插入刪除修改等操作
Sed處理的時候,一次處理一行,每一次把當前處理的存放在臨時緩衝區,處理完後輸出緩衝區內容到螢幕,然後把下一行讀入緩衝區,如此重複,直到結尾。


1、命令格式和引數
sed [-nefr] [動作] 檔案
引數:
-n 安靜模式,在sed處理的時候,所有來自STDIN的資料都會被輸出到終端,加上-n會只輸出處理的哪行
-e 直接在命令列上進行sed動作編輯
-f 直接將sed的動作寫在檔案內
-r sed動作支援延伸的正則表達(預設只是基礎正則)
-i 直接修改檔案內容(慎用,尤其是用系統檔案做練習的時候)


動作:
append:增加,在當前行的下一行增加

c  :取代,取代n1到n2之間的行
ddelete:刪除
i插入,目前行的上一行插入
p列印,常常與-n使用
s取代,s/old/new/g


2、基礎用法詳解
(1)第一行之後新增一行

  1. [[email protected] ~]# nl file.txt | sed "1a add text"  
  2.      1  wtmp begins Mon Feb 24 14:26:08 2014  
  3. add text  
  4.      2  192.168.0.1  
  5.      3  162.12.0.123  
  6.      4  this is the last line  
(2)第一行之前新增一行
  1. [[email protected]
     ~]# nl file.txt | sed "1i add text"  
  2. add text  
  3.      1  wtmp begins Mon Feb 24 14:26:08 2014  
  4.      2  192.168.0.1  
  5.      3  162.12.0.123  
  6.      4  this is the last line  
(3)刪除第2,3行
  1. [[email protected] ~]# nl file.txt | sed "2,3d"  
  2.      1  wtmp begins Mon Feb 24 14:26:08 2014  
  3.      4  this is the last line  
(4)列印第2,3行
  1. [[email protected] ~]# sed -n "2,3p" file.txt   
  2. 192.168.0.1  
  3. 162.12.0.123  

這裡要提到的是,儘量使用-n,不然會出現這樣的結果
  1. [[email protected] ~]# sed "2,3p" file.txt   
  2. wtmp begins Mon Feb 24 14:26:08 2014  
  3. 192.168.0.1  
  4. 192.168.0.1  
  5. 162.12.0.123  
  6. 162.12.0.123  
  7. this is the last line  

(5)把168換成169
先看原始檔
  1. [[email protected] ~]# cat file.txt   
  2. wtmp begins Mon Feb 24 14:26:08 2014  
  3. 192.168.0.1  
  4. 162.12.0.123  
  5. this is the last line  
處理後
  1. [[email protected] ~]# sed "s/168/169/g" file.txt   
  2. wtmp begins Mon Feb 24 14:26:08 2014  
  3. 192.169.0.1  
  4. 162.12.0.123  
  5. this is the last line  

(6)插入多行
  1. [[email protected] ~]# nl file.txt | sed "2afirst\nsecond" file.txt   
  2. wtmp begins Mon Feb 24 14:26:08 2014  
  3. 192.168.0.1  
  4. first  
  5. second  
  6. 162.12.0.123  
  7. this is the last line  

(7)匹配資料,然後進行操作
只需要在上述的基礎上加上正則匹配
sed "/匹配的模式/處理的方式" file.txt 
sed "/^root/d" file.txt 對開始有root的刪除
例如
匹配begin,並刪除改行
  1. [[email protected] ~]# nl file.txt | sed "/begin/d"  
  2.      2  192.168.0.1  
  3.      3  162.12.0.123  
  4.      4  this is the last line  
匹配123,並且把含有123的行162都替換成172
  1. [[email protected] ~]# nl file.txt | sed "/123/{s/162/172/g;q}"  
  2.      1  wtmp begins Mon Feb 24 14:26:08 2014  
  3.      2  192.168.0.1  
  4.      3  172.12.0.123  
  5.      4  this is the last line  
這裡大括號{}裡可以執行多個命令,用;隔開即可,q是退出
(8)連續編輯 -e
刪除第二行,並且匹配把last替換成new
  1. <pre name="code" class="plain">[[email protected] ~]# nl file.txt | sed -e "2d" -e "s/last/new/"  
  2.      1  wtmp begins Mon Feb 24 14:26:08 2014  
  3.      3  162.12.0.123  
  4.      4  this is the new line  

(9)直接修改檔案,切記不要修改系統檔案
  1. [[email protected] ~]# sed -i "/begin/{s/24/25/g}" file.txt   
  2. [[email protected] ~]# cat file.txt   
  3. wtmp begins Mon Feb 25 14:26:08 2014  
  4. 192.168.0.1  
  5. 162.12.0.123  
  6. this is the last line  


三 、一個比較有趣的例子
如何替換\n也就是把所有的行都歸為一行

第一種方式
  1. [[email protected] ~]# sed ':a;N;$!ba;s/\n/ /g' file.txt   
  2. wtmp begins Mon Feb 25 14:26:08 2014 192.168.0.1 162.12.0.123 this is the last line  

第二種方式

  1. [[email protected] ~]# tr "\n" " " < file.txt   
  2. wtmp begins Mon Feb 25 14:26:08 2014 192.168.0.1 162.12.0.123 this is the last line last linen  

相關推薦

Linux Sed命令+如何替換"\n"(很多面試問道)

SedSed是一個強大的文字處理工具可以採用正則匹配,對文字進行插入刪除修改等操作Sed處理的時候,一次處理一行,每一次把當前處理的存放在臨時緩衝區,處理完後輸出緩衝區內容到螢幕,然後把下一行讀入緩衝區,如此重複,直到結尾。1、命令格式和引數sed [-nefr] [動作]

Linux sed命令

world 正則 技術分享 earch yum shutdown height 註意 備註 sed是一種流編編器,它是文本處理中非常中的工具,能夠完美的配合正則表達式便用,功物能不同凡響。 處理時,把當前處理的行存儲在臨時緩沖區中,稱為”模式空間”( oat

linux sed命令2

簡介 sed 是一種線上編輯器,它一次處理一行內容。處理時,把當前處理的行儲存在臨時緩衝區中,稱為“模式空間”(pattern space),接著用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往螢幕。接著處理下一行,這樣不斷重複,直到檔案末尾。檔案內容並沒有 改變,除非你使用重定向儲存輸出。S

玩轉LINUXsed命令

用戶 常見 mail 括號 {} int 緩沖 復雜 commands Linux sed命令是利用script來處理文本文件。 sed可依照script的指令,來處理、編輯文本文件。 Sed主要用來自動編輯一個或多個文件;簡化對文件的反復操作;編寫轉換程序等。 執行時,s

linuxsed命令

sed 's/[ ][ ]*/ /g' 如果空格與tab共存時用sed -e 's/[[:space:]][[:space:]]*/ /g' filename替換文件名中的空格newfile=${oldfile// /_} 用 tr : find . -type f -name "* *" -print |

Linuxsed命令

sed是一種流編輯器,它是文字處理中非常好的工具,能夠完美的配合正則表示式使用,功能不同凡響。處理時,把當前處理的行儲存在臨時緩衝區中,稱為“模式空間”(pattern space),接著用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往螢幕。接著處理下一行,

linux/unix命令sed

ps:我只能說別說你會sed。。。這篇綜合很多sed文件寫成。 1. 功能說明:利用script來處理文字檔案。 語  法:sed [-hnV][-e(script)][-f (script檔案) ][文字檔案] 補充說明:sed可依照script的指令,來處理、編輯文字檔

Linux Shell指令碼程式設計--sed命令

簡介 sed 是一種線上編輯器,它一次處理一行內容。處理時,把當前處理的行儲存在臨時緩衝區中,稱為“模式空間”(pattern space),接著用sed命令處理緩衝區中的內容,處理完成後,把緩衝區的內容送往螢幕。接著處理下一行,這樣不斷重複,直到檔案末尾。檔案內容並沒有

Linux netstat命令,高級面試必備

bytes tool head osi ngs 進行 pen 通信 詳細信息 簡介 Netstat 命令用於顯示各種網絡相關信息,如網絡連接,路由表,接口狀態 (Interface Statistics),masquerade 連接,多播成員 (Multicast Mem

linux top 命令

ctrl+ 一次 所有 使用方法 ase 隱藏 統計 ini 前臺 top命令是Linux下常用的性能分析工具,能夠實時顯示系統中各個進程的資源占用狀況,類似於Windows的任務管理器。下面詳細介紹它的使用方法。top - 01:06:48 up 1:22, 1 user

【轉】linux awk命令

column 環境變量 最後一行 工作流程 初始 文本文件 for循環 其中 cti 簡介 awk是一個強大的文本分析工具,相對於grep的查找,sed的編輯,awk在其對數據分析並生成報告時,顯得尤為強大。簡單來說awk就是把文件逐行的讀入,以空格為默認分隔符將每行切

Linux ls命令

-c 目錄 輸出 限制 普通 排序 當前 ls -l sna ls 命令可以說是Linux下最常用的命令之一。 -a 列出目錄下的所有文件,包括以 . 開頭的隱含文件。(後有詳解)-b 把文件名中不可輸出的字符用反斜杠加字符編號(就象在c語言裏一樣)的形式列出。-c 輸出

linux lsof命令

open 日誌 文件和目錄 delete 數據報 正在 某個文件 alt targe 簡介 lsof(list open files)是一個列出當前系統打開文件的工具。在linux環境下,任何事物都以文件的形式存在,通過文件不僅僅可以訪問常規數據,還可以訪問網絡連接和硬件

sed命令

sed命令1.sed命令參數詳解sed [options] [function] [input-file]sed 選項動作輸入文件選項與參數:-n :使用安靜(silent)模式。在一般 sed 的用法中,所有來自 STDIN 的數據一般都會被列出到終端上。但如果加上 -n 參數後,則只有經過sed 特殊處理

linux tail 命令

基本 linux中 file tail命令 方式 sed 缺省 顯示 有效 linux ---tail命令 linux中tail命令---用於查看文件內容 最基本的是cat、more和less。 1. 如果你只想看文件的前5行,可以使用head命令,如: head -5 /

linux screen 命令

文本 常用 小時 遠程終端 參考 編輯 load 調整 長時間 一、背景 系統管理員經常需要SSH 或者telent 遠程登錄到Linux 服務器,經常運行一些需要很長時間才能完成的任務,比如系統備份、ftp 傳輸等等。通常情況下我們都是為每一個這樣的任務開一個遠程終端窗口

sed命令 vim高級技巧 shell編程上

initial zhang 快捷鍵 顯示 cls $2 五步 pos ack 第1章 sed命令詳解 1.1 查找固定的某一行 1.1.1 awk命令方法 [[email protected] ~]# awk ‘!/oldboy/‘ person.txt

[轉載]linux awk命令

基本 特定 收集 comm rip 解釋 文本 工作流程 復制代碼 簡介 awk是一個強大的文本分析工具,相對於grep的查找,sed的編輯,awk在其對數據分析並生成報告時,顯得尤為強大。簡單來說awk就是把文件逐行的讀入,以空格為默認分隔符將每行切片,切開的部分再進行各

Linux crontab命令

條件 nta mman minute 使用 1-1 同時 刪除用戶 設置 1.crontab命令概覽      命令參數:   -u user:用來設定某個用戶的crontab服務,例如,“-u ixdba”表示設定ixdba用戶的crontab服務,此參數一般有root用

linux top命令

swa mem img 針對 alt 線程 opp 分區 緩存 Linux系統可以通過top命令查看系統的CPU、內存、運行時間、交換分區、執行的線程等信息。通過top命令可以有效的發現系統的缺陷出在哪裏。是內存不夠、CPU處理能力不夠、IO讀寫過高。