【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
相關推薦
【shell】【sed】刪除和替換檔案中某一行的方法
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"#將變數修飾為
【Linux】【Shell直譯器使用小結】
定義:一種終端直譯器,可以作為使用者與作業系統內部通訊的媒介,支援變數、引數、迴圈、分支等功能特性 Shell指令碼命令的工作方式: 互動式(interactive):使用者輸入一條指令就立即執行;// 例如,在命令列視窗輸入 pwd 命令,該命令就被執行並顯示當
【必備技能】HashMap在jdk1.7和1.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
【leetcode】Python實現-83.刪除排序連結串列中的重複元素
83.刪除排序連結串列中的重複元素 描述 給定一個排序連結串列,刪除所有重複的元素,使得每個元素只出現一次。 示例1 輸入: 1->1->2 輸出: 1->2 示例2 輸入: 1->1->2-
【Qt OpenGL教程】25:變形和從檔案中載入3D物體
第25課:變形和從檔案中載入3D物體 (參照NeHe) 這次教程中,我們將學會如何從檔案中載入3D模型,並且平滑的從一個模型變形為另一個模型。在這一課裡,我們將介紹如何實現模型的變形過程,這將會是效果很棒的一課! 程式執行時效果如下: 下面進入教程: 我們這次將在第
【Shell指令碼學習8】Shell特殊變數:Shell $0, $#, $*, [email protected],
前面已經講到,變數名只能包含數字、字母和下劃線,因為某些包含其他字元的變數有特殊含義,這樣的變數被稱為特殊變數。 例如,$ 表示當前Shell程序的ID,即pid,看下面的程式碼: $echo $$ 執行結果 29949 特殊變數列表 變數
【群話題精華】五月集錦—— 機器學習和深度學習中一些值得思考的問題
原創宣告:本文為 SIGAI 原創文章,僅供個人學習使用,未經允許,不能用於商業目的。 SIGAI微信技術交流群已經運營3周了,在這期間群友們對很多技術問題進行了熱烈的討論,在這裡,我們將精華的話題整理出來,做一個總結。以後在每個月我們都會有類似的總結,敬請期待。神經網
【Linux】make的工作原理和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指令碼學習13】Shell陣列: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()