我該怎麼做?我有多個例如foobar模式在我的文件中,如何添加後,例如第4個some_text?使用sed在第N個匹配模式後插入一些文本
1
A
回答
1
以下是否適合您?
sed ':a;$!{N;ba};s/\(foobar\)/\1\nsome_text/4' inputfile
對於輸入:
$ cat inputfile
line
foobar
foobar
foobar
line
foobar
line
foobar
line
foobar
line
這將產生
$ sed ':a;$!{N;ba};s/\(foobar\)/\1\nsome_text/4' inputfile
line
foobar
foobar
foobar
line
foobar
some_text
line
foobar
line
foobar
line
使用FreeBSD上-e
:
sed -e :a -e '$!N' -e '$!ba' -e 's/\(foobar\)/\1\nsome_text/4' inputfile
+0
此錯誤: sed:1:「:a; $!{N; ba}; s/\(foobar \ ...」:未使用的標籤'a; $!{N; ba}; s/\(foobar \)/ \ 1 \ nsome_text/4' –
+0
你有GNU sed嗎? – devnull
+0
我使用的是FreeBSD –
1
一個awk版本:
awk '/foo/{x++} x==4{sub(/foo/,"&some_text")}1' file
例如:
kent$ cat file
foo
foo
trash
foo
trash
foo
foo
foo
kent$ awk '/foo/{x++} x==4{sub(/foo/,"&some_text")}1' file
foo
foo
trash
foo
trash
foosome_text
foo
foo
相關問題
- 1. sed:在第一次模式匹配後插入文件的內容
- 2. sed在同一行上匹配模式後插入字符串
- 3. 如何在匹配模式之前使用sed插入一行
- 4. 使用sed更改匹配後的第一個匹配
- 5. Sed匹配模式時插入值
- 6. 匹配模式後修改第n行
- 7. 僅在第一行匹配後插入sed?
- 8. 如果在CSV的第n列中模式不匹配,awk插入第n行
- 9. Sed替換第n個匹配項
- 10. sed:模式匹配後在N行上執行替換
- 11. 用sed打印每個匹配模式的第一行
- 12. SED提取2次模式匹配後第一次出現
- 13. 在使用sed的模式之後在第n行中的文件中插入字符串
- 14. 如何使用sed在匹配模式之後添加新的文本行?
- 15. 使用sed匹配第5個字段中的文本
- 16. Sed提取兩種模式之間的第一個匹配
- 17. SED插入匹配圖案
- 18. SED插入字符匹配
- 19. 匹配模式,插入模式,直到下一次匹配
- 20. 使用sed的空白模式匹配
- 21. sed的:在一些字節匹配模式
- 22. sed只有最後一個匹配模式
- 23. Python在搜索中最後一次匹配後插入文本
- 24. 使用PowerShell查找與模式匹配的第一個文件
- 25. 在模式後在第n行插入打印
- 26. Sed,在模式匹配後插入一行並忽略任何註釋行,並使用#
- 27. sed替換模式,除非它匹配某些特定模式
- 28. sed:是否有一個選項可以替換每行匹配的第N個和第M個匹配項?
- 29. 正則表達式第n個匹配
- 30. SED模式後插入新行
所以你想要做的插入/對整個文件的第n次出現更換?例如。一行可以有任意數量的「foobar」 – Kent
@kent:每行只包含一個foobar,但整個文件包含很多。 –