[問題] 請問指定行以後n行 要如何加上特定字元

看板Linux作者 (尋夢園)時間10年前 (2015/07/22 00:06), 編輯推噓1(1014)
留言15則, 3人參與, 最新討論串1/2 (看更多)
小弟有個需求 file.txt AAAAA BBBBB CCCCC DDDDD EEEEE FFFFF 想改成 找到CCCCC之後的三行 前面加上@ 如 AAAAA BBBBB @CCCCC @DDDDD @EEEEE FFFFF 想用sed 但CCCCC不是特定行數 請問各位版友有何想法提示呢? 感謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.230.132.176 ※ 文章網址: https://www.ptt.cc/bbs/Linux/M.1437494811.A.33E.html

07/22 03:12, , 1F
最笨的辦法 先用grep 找到CCCCC那一行 行數
07/22 03:12, 1F

07/22 03:13, , 2F
然後紀錄該行內容為變數 例如 line 然後echo "@"$line
07/22 03:13, 2F

07/22 10:42, , 3F
sed -i '/CCCCC/,+2 s/^/@/' file.txt
07/22 10:42, 3F

07/24 23:16, , 4F
謝謝樓上兩位熱心幫忙 兩個方法我都有試出來 R大的方法
07/24 23:16, 4F

07/24 23:17, , 5F
更是我要的解法 不過因為是在開發版遇到類似的問題
07/24 23:17, 5F

07/24 23:19, , 6F
用的是busybox v1.19.4 其中sed.c裡面好像是不支援第二
07/24 23:19, 6F

07/24 23:20, , 7F
區塊格式是/,+3s/ 所以版子上會有錯誤訊息:
07/24 23:20, 7F

07/24 23:21, , 8F
sed: no address after comma
07/24 23:21, 8F

07/24 23:22, , 9F
而一般linux主機沒有問題,因此後來我有找到其他方法解決
07/24 23:22, 9F

07/24 23:23, , 10F
是假設已經知道要找的目標 第一行是CCCCC 第三行是EEEEE
07/24 23:23, 10F

07/24 23:24, , 11F
先找到目標區塊 再新增@到目標區塊的行首
07/24 23:24, 11F

07/24 23:25, , 12F
=> sed -i '/CCCCC/,/EEEEE/s/^/@/' 也可以達到效果
07/24 23:25, 12F

07/24 23:27, , 13F
但是缺點就是解法 跟我提問的指定行以後n行 有一點點
07/24 23:27, 13F

07/24 23:28, , 14F
牛頭不對馬嘴; 再次謝謝
07/24 23:28, 14F

07/27 09:00, , 15F
busybox也只能這樣了XD
07/27 09:00, 15F
文章代碼(AID): #1LhcuRC- (Linux)
文章代碼(AID): #1LhcuRC- (Linux)