のブロックを交換してください。
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. 置換は、私は私のテキストに頻出パターンを持っている
- 3. 私は以下のようにファイルを持っているパターン
- 4. は、私は次の内容のファイルを持っているテキスト
- 5. は、私はこのテキストを持っている
- 6. Vimは私はこの問題を持っているテキスト
- 7. 私はこのコードを持っているファイルで同じファイル
- 8. 私は、次のテキストをtxtファイル持っている辞書
- 9. 私はこのフォーム内のテキストを持っているPHP
- 10. 数値は、私は、フォーム内のファイル名のリストを持っているパターン
- 11. パターンのすべての一致を検索し、以下のように私はパターンを持っているテキスト
- 12. jQuery.ajaxSetupは()私はこれを持っているJSファイルで
- 13. 重複パターンは、私は次のコードを持っている
- 14. gitのは、私はこの.gitignoreファイルを持っているLaravel
- 15. 私はこれを持って、私のconfigure.acファイルでファイル
- 16. Pythonは、私はこのテキストを持っている私の正規表現
- 17. 私はこのプラグインイム作りを持っていると、ファイルのアップロードシステムに私はこの持ってアップロード
- 18. 私は、このbashのファイル持って
- 19. 私は、このJSONファイル持っているJSONファイル
- 20. 私は、このJSONファイル持っているJSONファイル
- 21. HttpError私はweb.configファイルでこれを持っている
- 22. 私はこのフォーマットでcsvファイル持っているR
- 23. は、私がダウンロードされるこのファイルを持っている
- 24. 私は私が持っている私のseeds.rbファイルでは、シードスクリプト
- 25. 正規表現が一致するように、私は次のテキスト持っているパターンと終了パターン
- 26. 私はこのパス上のファイルを持っているバッチファイル
- 27. テキスト変換私はここのWordPressサイトを持って
- 28. 私はxmlファイルを持っている
- 29. 私はcsvファイルを持っている
- 30. 私はcsvファイルを持っている
!ありがとうございました。 –