
答え1
あなたの例を考えると、次のように動作します。
$ cat ex
#multiline.pattern: ^\[
$ sed -e "s/^#multiline\.pattern:.*/multiline.pattern: '^\\\['/" ex
multiline.pattern: '^\['
#multiline.pattern:
これにより、 で始まる行と行の最後まで、必要な数の文字が出てくる行が、所望のパターンに置き換えられます。
あなたが求めているパターンにはいくつかの特別な記号(、、) が含まれて\
います[
。\
\\
\
\[
[
答え2
この問題を解決できます。sed "s@\^@\'\^@;s/$/\'/"
$ cat > toto
#multiline.pattern: ^\[
$ sed "s@\^@\'\^@;s/$/\'/" toto
#multiline.pattern: '^\['
アイデアは、正規表現を単純化するために、2回の連続操作で「^
by '^
」を「行末」に変更し、次に「行末」を「行末」に置き換えることです。'
もちろん、sed -i ...
ファイルを修正するために使用します。
答え3
間違った点は最後の部分です。先頭:
sed 's/multiline.pattern: \^\\\[/multiline.pattern: '\'\^\\\\[\'/g'
# ^ ^ ^ ?
最後の部分は、backslash
別の一重引用符が終わるまでエスケープされます。開いている。これが、引用符が別の引用符で終わるまで、さらに入力できるようにbash
求められます。$PS2
>
'
最後のものを削除する'
と動作します。
sed 's/multiline.pattern: \^\\\[/multiline.pattern: '\'\^\\\\[\'/g
# or:
sed 's/multiline.pattern: ^\\\[/multiline.pattern: '"'^\\\['/g"
sed "s/multiline.pattern: ^\\\\\[/multiline.pattern: '^\\\['/g"
sed 's/multiline.pattern: ^\\\[/multiline.pattern: \x27^\\[\x27/g'
返品:
- 例の出力から削除したいようです
#
。これを行うには、一致パターンにそれを含めますsed
(希望の引用スタイルを使用)。
sed 's/#multiline...'
- 括弧を使用してパターンの一部を「キャプチャ」して、代替アイテムで再利用することができます(と呼ばれる)。サブ式と逆参照):
sed -r 's/#(multiline\.pattern: )(\^\\\[)/\1'\'\\2\'/g
(-r
/を使用する--regexp-extended
必要はありませんが、読みやすくなります)
sed
エラーの可能性があるファイルを上書きするのではなく、出力でエラーを確認できるように、/オプションなしでコマンドを実行して、コマンドが期待どおりに機能していることを最初に確認することをお勧めします。-i
--in-place