のブロックを交換してください。
sedまたはawkを使用してどのように達成できますか?は、私はこのパターンでファイルを持っているテキスト
0
A
答えて
1
レスキューへのPerl!
perl -lne 'my @replacement = ("First line", "Second line");
if ($p = (/^---$/ .. /^## \[Unreleased\]/)) {
print $replacement[$p-1];
} else { print }'
フリップフロップオペレータ..
は、さらに、それは範囲に対する相対行番号を返し、次の2つの文字列の間だかどうかを示します。
0
awk -v RS="\0" 'gsub(/---\n\n## \[Unreleased\]\n/,"something")+1' file
この行に試してみてください。
0
この例は役に立ちます。
$ cat f
Some text
---
## [Unreleased]
More text here
$ seq 1 5 >mydata.txt
$ cat mydata.txt
1
2
3
4
5
$ awk '/^---/{f=1; while(getline < c)print;close(c);next}/^## \[Unreleased\]/{f=0;next}!f' c="mydata.txt" f
Some text
1
2
3
4
5
More text here
1
これは(GNUのSED)あなたのために働くかもしれない:
sed '/^---/,/^## \[Unreleased\]/c\something else' file
変更に必要な文字列には、2つの正規表現の間のラインを。
+0
うまくやった。 BSD 'sed'で動作させるには、' c \ 'の後に明示的な改行が必要です。 'bash'の' $ '...'文字列を使用します: 'sed -e $ '/^--- /、/^## \\ [未リリース\\]/c \\\ nsomething else' file' – mklement0
0
awk
ソリューション:
- がポータブルである(POSIX準拠)。
- は、ブロックの開始行と終了行の間の任意の数の行を扱うことができます(複数のブロックを同じテキストで置き換えることもできます)。
- は、(ファイル全体を一度に読むのではなく)1行ずつファイルを読み取ります。私が探していたまさに
awk -v new='something else' '
/^---$/ { f=1; next } # Block start: set flag, skip line
f && /^## \[Unreleased\]$/ { f=0; print new; next } # Block end: unset flag, print new txt
! f # Print line, if before or after block
' file
関連する問題
- 1. 私は次のパターンのファイル持っている別のファイル(パイソン)
- 2. Vimは私はこの問題を持っているテキスト
- 3. は、私はこのテキストを持っている
- 4. 私はこのコードを持っているファイルで同じファイル
- 5. 私は、次のテキストをtxtファイル持っている辞書
- 6. 私はこのフォーム内のテキストを持っているPHP
- 7. 数値は、私は、フォーム内のファイル名のリストを持っているパターン
- 8. jQuery.ajaxSetupは()私はこれを持っているJSファイルで
- 9. 重複パターンは、私は次のコードを持っている
- 10. 私はこれを持って、私のconfigure.acファイルでファイル
- 11. Pythonは、私はこのテキストを持っている私の正規表現
- 12. 私は、このbashのファイル持って
- 13. 私は、このJSONファイル持っているJSONファイル
- 14. HttpError私はweb.configファイルでこれを持っている
- 15. 私はこのフォーマットでcsvファイル持っているR
- 16. は、私がダウンロードされるこのファイルを持っている
- 17. 私はこのパス上のファイルを持っているバッチファイル
- 18. テキスト変換私はここのWordPressサイトを持って
- 19. は、私は次のテキスト形式のファイルを持っているアプリケーション
- 20. 私はこのようなファイルを持っているリストに
- 21. 私はこのようなXMLファイルを持っているC#
- 22. 私はこのコードを持っているファイル
- 23. CodeIgniterの - 私は、このリンクでファイルの.jsを持っているのJavaScriptファイル
- 24. テキストは、私はこのDOM構造を持っているjQueryの
- 25. 私は、文字列を持っている「パターン」
- 26. 解析のXMLファイルには、私は、このXMLファイルを持っている
- 27. 私はこのサンプル持っている+
- 28. は私が持っている私のapp.html.eexファイルではパーシャル
- 29. 私は、このXSDファイル持っている既存のクラスファイル
- 30. REGEXP_REPLACEは、私は、このような文字列を持っているテキスト
!ありがとうございました。 –