国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統(tǒng) > Unix > 正文

Unix sed如何向文件中增加一行

2024-09-08 18:01:04
字體:
供稿:網(wǎng)友

前面我們簡單介紹了一個Unix sed及Unix sed的工作機制,現(xiàn)在我們來講講Unix sed實用:如何向文件中增加一行的功能,sed 是unix中最重要的編輯器之一,注意,有之一..支持多種編輯任務(wù),本文將實現(xiàn)題目的功能實例.

假定我們有一額文本文件,叫做empFile,包含了員工名字和員工id,如下:

  1. Hilesh, 1001 
  2. Bharti, 1002 
  3. Aparna, 1003 
  4. Harshal, 1004 
  5. Keyur, 1005 

1.如何通過sed給文件添加標題行-“Employee, EmpId”

  1. $ sed  ‘1i Employee, EmpId’  empFile 
  2. Employee, EmpId 
  3. Hilesh, 1001 
  4. Bharti, 1002 
  5. Aparna, 1003 
  6. Harshal, 1004 
  7. Keyur, 1005 

解釋:數(shù)字1,是說只對第一行執(zhí)行操作,i代表在insert(熟悉vim的同學(xué)應(yīng)該知道,i會在當(dāng)前字符的前面插入,a是在后面插入),因此,1i就表示在將Employee,EmpId插入到第一行之前.

然后,有了標題行的文件僅僅會輸出到標準輸出,源文件內(nèi)容并不會改變,如果需要更新源文件,可以使用重定向輸出到一個臨時文件,然后移動到原始文件,如果Unix系統(tǒng)的sed是GUN版本的,sed會有一個-i選項,可以直接實現(xiàn)更新源文件,如何查看版本,終端下輸入sed —version即可看到,下面先執(zhí)行,再查看文件,發(fā)現(xiàn)已經(jīng)多了標題行了.

  1. $ sed -i ‘1i Employee, EmpId’ empFile 
  2. $ cat empFile 
  3. Employee, EmpId 
  4. Hilesh, 1001 
  5. Bharti, 1002 
  6. Aparna, 1003 
  7. Harshal, 1004 
  8. Keyur, 1005 

2.如何在標題行之后,也就是原始第一行之前添加一行橫線—“——-”

  1. $ sed -i ‘1a ———————-‘  empFile 
  2. $ cat empFile 
  3.  
  4. Employee, EmpId 
  5.  
  6. Hilesh, 1001 
  7. Bharti, 1002 
  8. Aparna, 1003 
  9. Harshal, 1004 
  10. Keyur, 1005 

同1,中,1表示第一行,a表示append(附加),也就是說當(dāng)讀入第一行的時候在其之后添加一行,如果你使用2i作為命令也是正確的,就是指當(dāng)讀入第二行的時候,在其之前插入一行.

3.如何在文件尾部添加一行

  1. $ sed -i ‘$a ———————-‘ empFile 
  2. $ cat empFile 
  3.  
  4. Employee, EmpId 
  5.  
  6. Hilesh, 1001 
  7. Bharti, 1002 
  8. Aparna, 1003 
  9. Harshal, 1004 
  10. Keyur, 1005 
  11. ———————- 

為了在文件尾部插入一行,如果使用之前的方法就需要知道總共有多少行,而$符號則直接指明了最后一行,因此$a表示在讀入最后一行的時候,在后面插入一行.

4.如何在指定的記錄之后插入一條新紀錄,假定我們的例子文件的內(nèi)容現(xiàn)在是:

  1. Employee, EmpId 
  2.  
  3. Hilesh, 1001 
  4. Harshal, 1004 
  5. Keyur, 1005 
  6. ———————- 

如果我想在Hilesh這個員工之后插入Bharti員工的信息,我這樣做:

  1. $ sed -i ‘/Hilesh/a Bharti, 1002’ empFile 
  2. $ cat empFile 
  3.  
  4. Employee, EmpId 
  5.  
  6. Hilesh, 1001 
  7. Bharti, 1002 
  8. Harshal, 1004 
  9. Keyur, 1005 
  10. ———————- 

注意看,我們這里已經(jīng)不再使用數(shù)字或者其他表示行號的標識了,我們使用了一個模式,了解過正則表達式的朋友會比較熟悉,可以理解為某種規(guī)則- /Hilesh/a 這個命令表示對于每一行讀入的內(nèi)容,如果發(fā)現(xiàn) /Hilesh/這個匹配,在該行之后插入一行,也就是說如果文件里有兩行都是Hilesh員工,那么執(zhí)行完上面的命令,將會附加兩行內(nèi)容,這里可以想想sed的工作模式,對每一行執(zhí)行命令條件檢測,發(fā)現(xiàn)匹配,就執(zhí)行.

5.如何在指定記錄之前插入記錄呢,比如,我想在Harshal這條記錄之前插入Aparna記錄呢?

  1. $ sed -i ‘/Harshal/i Aparna, 1003’ empFile 
  2. $ cat empFile 
  3.  
  4. Employee, EmpId 
  5. //Vevb.com 
  6. Hilesh, 1001 
  7. Bharti, 1002 
  8. Aparna, 1003 
  9. Harshal, 1004 
  10. Keyur, 1005 
  11. ———————-

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 麻栗坡县| 来凤县| 黔西县| 南召县| 自贡市| 宜丰县| 嘉祥县| 阳新县| 河曲县| 海南省| 瓦房店市| 绥滨县| 武宁县| 龙南县| 娄烦县| 巨鹿县| 湾仔区| 石楼县| 南宫市| 碌曲县| 孟津县| 建湖县| 确山县| 忻州市| 沁水县| 日土县| 吐鲁番市| 南雄市| 谢通门县| 寿阳县| 乌兰察布市| 莆田市| 镇康县| 花莲市| 临海市| 正镶白旗| 图片| 五莲县| 永胜县| 和硕县| 林口县|