Linuxsed在某一行前面、後面追加(轉載)
如果知道行號可以用下面的方法
sed -i `88 r b.file` a.file
在a.txt的第88行插入檔案b.txt
awk `1;NR==88{system(“cat b.file”)}`
a.file > a.file
如果不知道行號,可以用正則匹配
sed -i `/regex/ r b.txt` a.txt # regex是正規表示式
awk `/target/{system(“cat b.file”)}`
a.file > c.file
sed的話如果不改變原始檔,可以去掉-i開關,修改會輸出到STDOUT
原檔案:
[root@xiaowu shell]# cat -n file
1 aaaa
2 bbbb
3 cccc
4 dddd
現在要在第二行即“bbbb”行的下面新增一行,內容為“xiaowu”
[root@xiaowu shell]# sed `/bbbb/axiaowu` file
aaaa
bbbb
xiaowu
cccc
dddd
如果要加兩行“xiaowu”可以用一下語句,注意用“
”換行
[root@xiaowu shell]# sed `/bbbb/axiaowu
xiaowu` file
aaaa
bbbb
xiaowu
xiaowu
cccc
dddd
如果要在第二行即“bbbb”行的上新增一行,內容為“xiaowu”,可以把引數“a”換成“i”
[root@xiaowu shell]# sed `/b/ixiaowu` file
aaaa
xiaowu
bbbb
cccc
dddd
以上檔案中只有一行匹配,如果檔案中有兩行或者多行匹配,結果有是如何呢?
[root@xiaowu shell]# cat -n file
1 aaaa
2 bbbb
3 cccc
4 bbbb
5 dddd
[root@xiaowu shell]# sed `/bbbb/axiaowu` file
aaaa
bbbb
xiaowu
cccc
bbbb
xiaowu
dddd
由結果可知,每個匹配行的下一行都會被新增“xiaowu”
那麼如果指向在第二個“bbbb”的下一行新增內容“xiaowu”,該如何操作呢?
可以考慮先獲取第二個“bbbb”行的行號,然後根據行號在此行的下一行新增“xiaowu”
獲取第二個“bbbb”行的行號的方法:
方法一:
[root@xiaowu shell]# cat -n file |grep b |awk `{print $1}`|sed -n “2”p
4
方法二:
[root@xiaowu shell]# sed -n `/bbbb/=` file |sed -n “2”p
4
由結果可知第二個“bbbb”行的行號為4,然後再在第四行的前或後新增相應的內容:
[root@xiaowu shell]# sed -e `4axiaowu` file
aaaa
bbbb
cccc
bbbb
xiaowu
dddd
[root@xiaowu shell]# sed -e `4axiaowu
xiaowu` file
aaaa
bbbb
cccc
bbbb
xiaowu
xiaowu
dddd
向指定行的末尾新增指定內容,比如在“ccccc”行的行尾介紹“ eeeee”
[root@xiaowu shell]# cat file
aaaaa
bbbbb
ccccc
ddddd
[root@xiaowu shell]# sed `s/cc.*/& eeeee/g` file
aaaaa
bbbbb
ccccc eeeee
ddddd
相關文章
- 寫在最前面
- JavaScript在元素尾部追加字串JavaScript字串
- 寫在最前面的話
- Android面試題(轉載)Android面試題
- app ui 自動化測試由於前面用例出錯卡在某個頁面導致後面用例執行失敗APPUI
- python3 執行如下程式碼,前面有效果,後面就出現格式不統一怎麼回事,求大神告知Python
- 如何使用Web3.js API 在頁面中進行轉賬WebJSAPI
- 在分頁物件資料上追加屬性物件
- 前端程式設計師市場分析:前面是火海,後面是刀山,走還是不走?前端程式設計師
- 微信小程式——個人中心——view在最前面——一行四個排列微信小程式View
- Kinetic:1/3的英國人希望在危機後更多地進行面對面社交
- Mysql:把指定資料行排在前面MySql
- 重定向到登入頁面後跳轉原頁面
- 轉載-知乎工作後的經驗
- 轉:在Linux上執行WinFormLinuxORM
- Qt 判斷滑鼠在某一控制元件上QT控制元件
- java 讀取指定某一行的文字Java
- redis cluster 強制kill某一個節點和shutdown某一個節點後修復過程Redis
- Excel技巧—如何從重複行中取某一行Excel
- JavaScript 追加字串JavaScript字串
- 001、寫在最前面(2018-12-14 週五)
- goroutine 背後的系統知識(轉載)Go
- 數字格式字串轉數字保留後面0字串
- 在Linux行內直接進行大小寫轉換Linux
- css3打包後自動追加字首外掛:autoprefixerCSSS3
- 在kubernetes上執行WASM負載ASM負載
- 模型追加欄位模型
- [轉載]ubuntu中執行python指令碼UbuntuPython指令碼
- WebSecurityConfigurerAdapter 關於成功之後頁面跳轉的配置WebAPT
- C++ error C2143: 語法錯誤: 缺少“;”(在“*”的前面)C++Error
- intellij 關閉後程式還在執行IntelliJ
- 後疫情時代:銀行業加速轉型的五大關鍵點(附下載)行業
- 慢說轉行轉崗到央企後的一年
- [轉載][威脅情報]繼LNMP後oneinstack也被新增了後門!LNMP
- 頁面正在載入執行loding等待效果
- 愚人節的背後:技術在一面打假,一面造假
- 動態執行緒池在轉轉平臺的實踐執行緒
- 透過awk在指定的列後面加內容