私はこの記事の指示に従いました。ファイルの特定の文字列の後にテキストを挿入するには?
しかし、私はこのガイドラインがOSXでは機能しないと思います。
Bashを使ってソースファイルにテキストを追加したいです。
sed '/pattern/a some text here' ${sourceFile}
しかし、コマンドを実行すると
"/pattern/a ここにテキストがあります。": コマンド a には、\ の後にテキストが続く必要があります。
編集する
infile
Single 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
。
/pattern/
--"パターン"を検索してください。a
- 行の後に次のテキストを追加します。text to insert
- テキスト.
- テキストの末尾に挿入w
- 更新されたファイルをディスクに書き込むq
——編集終了
リダイレクトは、一致する行を>/dev/null
沈黙させるように報告されます。ed
pattern
検索を要求する前に、ファイルに「パターン」が存在することを確認するためにed
コマンドの前にQuietを付けました。そうしないと、パターン検索が失敗したときに混乱します。grep
ed
?
ed