1. 程式人生 > >unix: 從文字中擷取指定匹配行(sed的用法)

unix: 從文字中擷取指定匹配行(sed的用法)

首先準備一段文字:test01.txt

begin
how are you?
fine thank you,and you?
i am fine too.
end
^Bbegin
please give me the paper.
ok,here you are.
thank you
^Cend

注意這裡的^B和^C屬於ascii碼形式,^B在16進位制下是x02,^C在16進位制下是x03.

題目一:擷取以begin開頭和end結尾的段落即:

begin
how are you?
fine thank you,and you?
i am fine too.
end
答案:sed -n '/^begin/,/^end/p' test01.txt

解釋:-n 是Suppresses the default output,格式是sed -n ‘/開始行/,/結束行/p’ test01.txt,這裡開始行定義為^begin表示以begin字元開始的行,結束行^end表示以end開始的行。然後擷取中間部分。

題目二:擷取以^Bbegin開始和^Cend結尾的段落即:

^Bbegin
please give me the paper.
ok,here you are.
thank you
^Cend

答案:sed -n '/^^Bbegin/,/^^Cend/p' test01.txt

解釋:這裡和上面答案的有點區別就是^B和^C,其實他們倆不是簡單的'^B'和'^C'字元組合,顯示有點迷惑,而真實是16位形式x02和x03。所以敲門就是在命令列裡怎麼輸入16進位制形式。要想打出^B可以這麼輸入:在命令列,先按ctl+v,然後再按ctl+B。這樣x02就輸入了,而顯示為^B不要糊塗了。同理x03也是先按ctl+v再按ctl+C。這裡要注意。

另注:

-e是進行多行編輯,即對輸入行應用多條sed命令時使用。
-n  取消預設的輸出
p  列印行

上面兩個語句都是擷取文字並列印到螢幕,如果要擷取並存到一個檔案裡,請使用重定向'>'(先清空檔案再輸出)和'>>'(追加輸出);

如:sed -n '/^begin/,/^end/p' test01.txt > test01.txt.sed  追加形式是 sed -n '/^begin/,/^end/p' test01.txt >> test01.txt.sed

相關推薦

unix: 文字擷取指定匹配sed用法

首先準備一段文字:test01.txt begin how are you? fine thank you,and you? i am fine too. end ^Bbegin please give me the paper. ok,here you are. than

如何文字擷取自己想有得資料並去重,統計,排序

關鍵的指令為: awk為分割擷取,sort為排序,uniq為去重,wc為統計,你需要單獨去理解這些指令,然後通過管道進行資料傳送 特別注意: 用uniq命令可以刪除相鄰的重複行: uniq [file] 但如果一文字中有重複卻不相鄰的行則無法刪除,需要結合sort命令: sort [

實踐案例:使用開源工具視訊構建人臉檢測模型Python實現

介紹 近年來,計算機視覺這個奇妙的領域已經發展到獨樹一幟的地步。在世界各地已經有大量的應用程式在廣泛使用。 我在這個領域最喜歡的事情之一是我們的社群擁抱開源概念的想法。即使是大型科技巨頭也願意與每個人分享新的突破和創新,這樣技術就不會成為“富人的專利”。 其中一種技術是人臉檢測,它在實際

linux命令擷取最後n所有命令

tail -n a.txt > b.txt 聯想:系統資訊 arch 顯示機器的處理器架構(1) uname -m 顯示機器的處理器架構(2) uname -r 顯示正在使用的核心版本 dmidecode -q 顯示硬體系統部件 - (SMBIOS / DM

java資料庫讀取圖片到Jpanel用BufferedImage

import java.io.InputStream; import java.sql.Connection; import java.sql.DriverManager; import java.sql.Statement; import java.sql.ResultS

c++ 文字讀取,並按空格對讀取的一行進行分割

ifstream tf("tf.obj", std::ios::in);//開啟檔案 char s[50] = {0}; string v = ""; string x = ""; string y =

Unity3d 資料庫讀取帶有換符的文字

在Unity指令碼中可以直接使用帶有“\n”轉義字元的字串,使得字串能夠在GUI中顯示換行。然而,若是在Unity中使用從資料庫中讀出的字串,Unity會將字串中的轉義字元當作普通的字元顯示在GUI中,而不會將字串換行。這時,需要使用下面的語句將從資料庫中讀出的字串格式進行

jsp頁面,一行文字超過指定字數,顯示省略號...

方法一:一個標籤加樣式解決 <td style="max-width:200px;overflow:hidden;white-space:nowrap;text-overflow:ellipsis">${item.alg_categoryname}</td> 各種樣式缺一不可

sed和awk實現將文字的上下兩合併為一行

轉自https://blog.csdn.net/abinge317/article/details/51287648  假設文字中的內容為: aaaa bbbb ccccc dddd 要求將文字內容處理為: aaaa    

分享:PHP陣列找到指定元素的位置

群裡有人問,有個陣列五個元素 分為1到5  現在要求 迴圈找出3元素的索引,怎麼做效能才是最高。   我不知道哪個效能最高,但是我想提出可以用多種方式進行查詢,然後進行比較選擇。 我想,最簡單最基礎的 應該是迴圈,迴圈到它,那就是它

使用不同的命令列印文字除過第一的所有

最近的工作中需要在shell中用命令對一個文字的內容進行處理,前提是忽略文字的第一行,只處理其他行。思考之下發現tail、awk和sed這三個命令均可以實現這一功能,故在此做下記錄。 使用tail命令 使用sed命令 使用awk命令 下面就來具體說明下如何使

ios --轉載-URL擷取所包含的引數,並且以字典的形式返回和引數字典轉URL

- (NSString *)keyValueStringWithDict:(NSDictionary *)dict { if (dict == nil) { return nil; } NSMutableString *string = [NSMutableStr

jq陣列刪除指定元素根據自定義條件 超好用的 $.grep() 方法 jQuery.grep()

  轉: jQuery.grep() 什麼是jQuery.grep()?   jQuery.grep()是一個查詢滿足過濾函式的陣列元素的函式。原始陣列不受影響,返回值為陣列。 用法介紹: 寫法: jQuery.grep( array, function(elementOfArr

【GAN ZOO翻譯】StackGAN:Text to Photo-realistic Image Synthesis with Stacked GAN 使用堆疊的GAN文字生成照片一樣逼真的圖片

Han Zhang1, Tao Xu2, Hongsheng Li3, Shaoting Zhang4, Xiaogang Wang3, Xiaolei Huang2, Dimitris Metaxas1 1羅格斯大學 2裡海大學 3香港中文大學 4百度研究院

文字提取圖片路徑java 解析富文字處理 img 標籤

很多專案都需要到富文字來新增內容,就好比新聞啊,旅遊景點之類的,都需要使用富文字去新增資料,然而怎麼我這邊就發現了兩個問題 怎樣將富文字的圖片的 src 獲取出來? 方法一: 利用正則表示式: public static List<String> getImgStr(String h

【matlab】圖片擷取矩形區域手工選取/標記在原圖上/擷取矩形區域並儲存

%第一步:從圖片中選取矩形框區域 I = imread('o.png'); [A,rect] = imcrop(I); imshow(A); rect %第二步:根據rect確定:在原圖中繪製的矩形的座標,注意rect的格式[m n l k]->[(m,n) (m+l

C++:替換文字指定字串

替換文字檔案或者二進位制檔案中的指定字串 // 方法一 // 將原始檔中的特定字串替換,內容輸出到新檔案中 bool FileStringReplace(ifstream &instream, ofstream &outstream) { string str; si

Java實現位元組陣列擷取指定長度陣列元素

本文使用System提供的一個靜態方法arraycopy(),實現陣列間的複製。 public static native void arraycopy(Object src,int srcPos,O

OpenCV 影象擷取指定部分

今天程式中用到,就總結了一下, 方法一,使用影象ROI: 方法二,使用cvGetSubRect方法: 直接附上原始碼: void clipImage(IplImage* src,CvRect rect,IplImage *dst) { #if define METH

文字提取身份證號碼

   需要從一段文字中獲取身份證號碼的個數,具體程式碼如下: string testtext = "來所反映情況的報警人(男,XXXXXX)報警稱其老婆(女,身份證號碼:41XXXXXXXX,戶籍地址:河南省洛陽洛寧縣長水鄉,身高:150cm,身材偏瘦,馬尾辮)於2018年5