1. 程式人生 > >【shell】【sed】刪除和替換檔案中某一行的方法

【shell】【sed】刪除和替換檔案中某一行的方法

shell指令碼三劍客,awk、grep、sed

轉自:https://blog.csdn.net/lml282518588/article/details/52918765

sed是一個很好的檔案處理工具,本身是一個管道命令,主要是以行為單位進行處理,可以將資料行進行替換、刪除、新增、選取等特定工作,下面先了解一下sed的用法

sed命令列格式為:
         sed [-nefri] ‘command’ 輸入文字        

常用選項:
        
-n∶使用安靜(silent)模式。在一般 sed 的用法中,所有來自 STDIN的資料一般都會被列出到螢幕上。但如果加上 -n 引數後,則只有經過sed 特殊處理的那一行(或者動作)才會被列出來。
        -e∶直接在指令列模式上進行 sed 的動作編輯;
        -f∶直接將 sed 的動作寫在一個檔案內, -f filename 則可以執行 filename 內的sed 動作;
        -r∶sed 的動作支援的是延伸型正規表示法的語法。(預設是基礎正規表示法語法)
        -i∶直接修改讀取的檔案內容,而不是由螢幕輸出。

       

常用命令:
        a   ∶新增, a 的後面可以接字串,而這些字串會在新的一行出現(目前的下一行)~
        c   ∶取代, c 的後面可以接字串,這些字串可以取代 n1,n2 之間的行!
        d   ∶刪除,因為是刪除啊,所以 d 後面通常不接任何咚咚;
         i   ∶插入, i 的後面可以接字串,而這些字串會在新的一行出現(目前的上一行);
         p  ∶列印,亦即將某個選擇的資料印出。通常 p 會與引數 sed -n 一起運作~
         s  ∶取代,可以直接進行取代的工作哩!通常這個 s 的動作可以搭配正規表示法!例如 1,20s/old/new/g 就是啦!

舉例:(假設我們有一檔名為test)
     刪除某行
     [[email protected] ipm# sed '1d' test              #刪除第一行 
     [[email protected] ipm] # sed '$d' test              #刪除最後一行
     [[email protected] ipm] # sed '1,2d' test           #刪除第一行到第二行
     [[email protected] ipm] # sed '2,$d' test           #刪除第二行到最後一行

  顯示某行
.    [[email protected] ipm# sed -n '1p' test           #顯示第一行 
     [[email protected] ipm# sed -n '$p' test           #顯示最後一行
     [[email protected] ipm# sed -n '1,2p'test#顯示第一行到第二行
     [[email protected] ipm# sed -n '2,$p'test        #顯示第二行到最後一行

  使用模式進行查詢
     [[email protected] ipm# sed -n '/ruby/p' ab    #查詢包括關鍵字ruby所在所有行
     [[email protected] ipm# sed -n '/\$/p' ab        #查詢包括關鍵字$所在所有行,使用反斜線\遮蔽特殊含義

  增加一行或多行字串
     [[email protected] ipm]# cat ab
     Hello!
     ipmis me,welcome to my blog.
     end
     [[email protected] ipm# sed '1a drink tea' ab  #第一行後增加字串"drink tea"
     Hello!
     drink tea
     ipm is me,welcome to my blog. 
     end
     [[email protected] ipm# sed '1,3a drink tea' ab #第一行到第三行後增加字串"drink tea"
     Hello!
     drink tea
     ipm is me,welcome to my blog.
     drink tea
     end
     drink tea
     [[email protected] ipm# sed '1a drink tea\nor coffee' ab   #第一行後增加多行,使用換行符\n
     Hello!
     drink tea
     or coffee
     ipm is me,welcome to my blog.
     end

  代替一行或多行
     [[email protected] ipm# sed '1c Hi' ab                #第一行代替為Hi
     Hi
     ipm is me,welcome to my blog.
     end
     [[email protected] ipm# sed '1,2c Hi' ab             #第一行到第二行代替為Hi
     Hi
     end

  替換一行中的某部分
  格式:sed 's/要替換的字串/新的字串/g'   (要替換的字串可以用正則表示式)
     [[email protected] ipm# sed -n '/ruby/p' ab | sed 's/ruby/bird/g'    #替換ruby為bird
   [[email protected] ipm# sed -n '/ruby/p' ab | sed 's/ruby//g'        #刪除ruby

     插入
     [[email protected] ipm# sed -i '$a bye' ab         #在檔案ab中最後一行直接輸入"bye"
     [[email protected] ipm]# cat ab
     Hello!
     ipm is me,welcome to my blog.
     end
     bye

相關推薦

shellsed刪除替換檔案一行方法

shell指令碼三劍客,awk、grep、sed轉自:https://blog.csdn.net/lml282518588/article/details/52918765sed是一個很好的檔案處理工具,本身是一個管道命令,主要是以行為單位進行處理,可以將資料行進行替換、刪除

shell如何取到檔案一行一列的內容

<span style="font-size:18px;">#!/bin/sh file=$1 #把一個file中的內容放到all_dc_host中 all_dc_host=`cat ${file}` for((j=1;j<=454;j++)) do nu

shell指令碼學習-3

part-1:   #!/bin/bash#source,sh,./shell_name :shell指令碼執行方法 # #變數 #declare :修飾x=10/2echo "$x"#將變數修飾為只讀declare -r xx="a" #再次為變數賦值檢驗修飾echo "$x"#將變數修飾為

LinuxShell直譯器使用小結

定義:一種終端直譯器,可以作為使用者與作業系統內部通訊的媒介,支援變數、引數、迴圈、分支等功能特性 Shell指令碼命令的工作方式: 互動式(interactive):使用者輸入一條指令就立即執行;// 例如,在命令列視窗輸入  pwd 命令,該命令就被執行並顯示當

必備技能HashMap在jdk1.71.8的實現

static final int TREEIFY_THRESHOLD = 8; public V put(K key, V value) { return putVal(hash(key), key, value, false, true); } final V putVal(i

leetcodePython實現-83.刪除排序連結串列的重複元素

83.刪除排序連結串列中的重複元素 描述 給定一個排序連結串列,刪除所有重複的元素,使得每個元素只出現一次。 示例1 輸入: 1->1->2 輸出: 1->2 示例2 輸入: 1->1->2-

Qt OpenGL教程25:變形檔案載入3D物體

第25課:變形和從檔案中載入3D物體 (參照NeHe) 這次教程中,我們將學會如何從檔案中載入3D模型,並且平滑的從一個模型變形為另一個模型。在這一課裡,我們將介紹如何實現模型的變形過程,這將會是效果很棒的一課! 程式執行時效果如下: 下面進入教程: 我們這次將在第

Shell指令碼學習8Shell特殊變數:Shell $0, $#, $*, [email protected],

前面已經講到,變數名只能包含數字、字母和下劃線,因為某些包含其他字元的變數有特殊含義,這樣的變數被稱為特殊變數。 例如,$ 表示當前Shell程序的ID,即pid,看下面的程式碼: $echo $$ 執行結果 29949 特殊變數列表 變數

群話題精華五月集錦—— 機器學習深度學習一些值得思考的問題

原創宣告:本文為 SIGAI 原創文章,僅供個人學習使用,未經允許,不能用於商業目的。    SIGAI微信技術交流群已經運營3周了,在這期間群友們對很多技術問題進行了熱烈的討論,在這裡,我們將精華的話題整理出來,做一個總結。以後在每個月我們都會有類似的總結,敬請期待。神經網

Linuxmake的工作原理makefile檔案

1、make會在當前目錄下找名字叫“Makefile”或“makefile”的檔案。2、如果找到,它會找檔案中的第一個目標檔案(target),在上面的例子中,他會找到“edit”這個檔案,並把這個檔案作為最終的目標檔案。3、如果edit檔案不存在,或是edit所依賴的後面的 .o 檔案的檔案修改時間要比ed

springmvc 的請求流程一:web伺服器啟動的時候執行DispatcherServlet 的init 方法,初始化springmvc 容器

總結: 1 當伺服器啟動的時候如果在裡面配置了<load-on-startup>的話,就會在伺服器啟動的手自動載入init()方法,並且例項化servlet,但是如果沒有配置,也會在DispatcherServlet第一次請求發出的時候執行DispatcherS

一次過Lintcode 112:刪除排序連結串列的重複元素

給定一個排序連結串列,刪除所有重複的元素每個元素只留下一個。 樣例 給出 1->1->2->null,返回 1->2->null 給出 1->1->2-&

Shell指令碼學習13Shell陣列:shell陣列的定義、陣列長度

Shell在程式設計方面比Windows批處理強大很多,無論是在迴圈、運算。 bash支援一維陣列(不支援多維陣列),並且沒有限定陣列的大小。類似與C語言,陣列元素的下標由0開始編號。獲取陣列中的元素要利用下標,下標可以是整數或算術表示式,其值應大於或等於0。 定義陣列

轉載linux查詢目錄下的所有檔案是否含有某個字串

連結自 http://blog.sina.com.cn/s/blog_691a84f301015khx.html,並略加修訂。 https://www.cnblogs.com/snake553/p/5804181.html  這個顯示的更美觀 查詢目錄下的所有檔案中是否含

OS大作業用多執行緒統計txt檔案字元個數(Java實現)

問題描述 給定一個txt檔案,利用不同個數的執行緒查詢檔案中某字元的個數,探究執行緒個數與查詢時間的關係。 本作業程式碼使用JAVA實現,版本為10.0.2,使用的IDE為Eclipse4.9.0. 結果測試所用的txt檔案內容為英文,編碼格式為UTF-8。 原始碼 第一版程式碼:(

C語言向建立的 d:\\demo.txt 檔案追加一個字串。

#include<stdio.h> int main() { FILE *fp; char str[102] = { 0 }, strTemp[100]; if ((fp = fopen("D:\\demo.txt", "at+")) == NULL) {

python爬蟲讀寫、追加到excel檔案

爬取糗事百科熱門 安裝 讀寫excel 依賴 pip install xlwt 安裝 追加excel檔案內容 依賴 pip install xlutils 安裝 lxml import csv import requests fr

shell刪除複製檔案(帶檔名更新)

因為複製的檔案複製之後要在檔名後面加上日期,所以在執行shell的時候輸入了兩個引數。刪除的檔案和複製的檔案都是.war結尾的,第一個引數是去除檔案格式(也就是“.war”)的檔名,第二個引數是要新增的日期 執行shell的指令是:“./test.sh demo 201

react刪除新增state的資料

刪除:handelItemDelete(index){ console.log("this666:",this); // immutable 一成不變 // state 不允許我們做任何的改變 this.setState((prevState)=>{

swift4--複製刪除移動檔案

//複製移動和刪除檔案 import UIKit class ViewController: UIViewController { override func viewDidLoad() { super.viewDidLoad()