看板 Linux 關於我們 聯絡資訊
小弟有個需求 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
noonee: 最笨的辦法 先用grep 找到CCCCC那一行 行數 07/22 03:12
noonee: 然後紀錄該行內容為變數 例如 line 然後echo "@"$line 07/22 03:13
Reylod: sed -i '/CCCCC/,+2 s/^/@/' file.txt 07/22 10:42
thisgo: 謝謝樓上兩位熱心幫忙 兩個方法我都有試出來 R大的方法 07/24 23:16
thisgo: 更是我要的解法 不過因為是在開發版遇到類似的問題 07/24 23:17
thisgo: 用的是busybox v1.19.4 其中sed.c裡面好像是不支援第二 07/24 23:19
thisgo: 區塊格式是/,+3s/ 所以版子上會有錯誤訊息: 07/24 23:20
thisgo: sed: no address after comma 07/24 23:21
thisgo: 而一般linux主機沒有問題,因此後來我有找到其他方法解決 07/24 23:22
thisgo: 是假設已經知道要找的目標 第一行是CCCCC 第三行是EEEEE 07/24 23:23
thisgo: 先找到目標區塊 再新增@到目標區塊的行首 07/24 23:24
thisgo: => sed -i '/CCCCC/,/EEEEE/s/^/@/' 也可以達到效果 07/24 23:25
thisgo: 但是缺點就是解法 跟我提問的指定行以後n行 有一點點 07/24 23:27
thisgo: 牛頭不對馬嘴; 再次謝謝 07/24 23:28
Reylod: busybox也只能這樣了XD 07/27 09:00