[英]sed - insert line after X lines after match
我有以下內容:
void function_1()
{
//something (taking only 1 line)
}
->INSERT LINE HERE<-
//more code
使用 sed,我想在 INSERT LINE HERE 標簽處插入行。 最簡單的方法應該是:
但是沒有一個已知的 sed 選項可以完成這項工作。
sed '/function_1/,3a new_text
在“function_1”之后立即插入 new_text
sed '/function_1/,+3a new_text
在接下來的 3 行中的每一行之后插入 new_text,在 'function_1' 之后
sed '/function_1/N;N;N; a new_text
在多個位置插入 new_text,與模式無關
謝謝。
用 GNU sed 試試這個:
sed "/function_1/{N;N;N;a new_text
}" filename
sed '/function_1(/,/^[[:space:]]*}/ {
,/^[[:space:]]*}/ a\
Line that\
you want to\
insert (append) here
}' YourFile
}
(獨自一人在符合最終一些前空間)從開始與部分function_1(
}
就像您的示例小心根據函數名稱進行選擇,因為它可以(通常是)用作其他代碼部分中對函數本身的調用,因此/^void function_1()$/
可能更好
使用 awk:
awk '1;/function_1/{c=4}c&&!--c{print "new text"}' file
1
是{print}
的簡寫,所以文件中的所有行都被打印出來c
設置為 4c
達到 1(所以c
為真且!--c
為真)時,插入該行你可以只使用!--c
,但增加了對檢查c
是和手段,真正的c
不會繼續下降超過0。
不計算,匹配:
sed -e '/^void function_1()/,/^}$/ { /^}$/a\
TEXT TO INSERT
}' input
這會查看聲明和右大括號之間的塊,然后在右大括號之后附加 TEXT_TO_INSERT。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.