OSXでファイル内の特定の文字列の後にテキストを挿入する方法は?

OSXでファイル内の特定の文字列の後にテキストを挿入する方法は?

私はこの記事の指示に従いました。ファイルの特定の文字列の後にテキストを挿入するには?

しかし、私はこのガイドラインがOSXでは機能しないと思います。

Bashを使ってソースファイルにテキストを追加したいです。

sed '/pattern/a some text here' ${sourceFile}

しかし、コマンドを実行すると

"/pattern/a ここにテキストがあります。": コマンド a には、\ の後にテキストが続く必要があります。

編集する

infileSingle Lineという新しいファイルを作成しました。

pattern

そしてbashスクリプト

#!/bin/bash
sed '/pattern/a\
text to insert' infile

スクリプトを実行すると、「パターン」はコンソールにエコーされますが、テキストは挿入されません。

編集する

私もbashスクリプトを試しました

#!/bin/bash
sed '/pattern/a\
add one line\
\\and one more' infile

そしてターミナルエコ

pattern
add one line
\and one more

しかし、infileにはまだ1行しかありません。

pattern

ベストアンサー1

OSXに1つあるかどうかはわかりませんed肯定的な提案)、ここに別のオプションがあります。

grep -q pattern infile && ed -s infile  <<< $'/pattern/\na\ntext to insert\n.\nw\nq' > /dev/null

これにより、次のコマンドが次に送信されますed

  1. /pattern/--"パターン"を検索してください。
  2. a- 行の後に次のテキストを追加します。
  3. text to insert- テキスト
  4. .- テキストの末尾に挿入
  5. w- 更新されたファイルをディスクに書き込む
  6. q——編集終了

リダイレクトは、一致する行を>/dev/null沈黙させるように報告されます。edpattern

検索を要求する前に、ファイルに「パターン」が存在することを確認するためにedコマンドの前にQuietを付けました。そうしないと、パターン検索が失敗したときに混乱します。greped?ed

おすすめ記事