teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

3

追記

2015/07/19 11:19

投稿

jollyjoester
jollyjoester

スコア1585

title CHANGED
File without changes
body CHANGED
@@ -39,4 +39,11 @@
39
39
 
40
40
  [追記2]
41
41
  Mac(BSD)のsedのiコマンドで改行をうまく扱えないのはバグのようでした。2005年のバグが2009年時点でも未解決とコメントされていますが、現在でも未解決のようですね。
42
- http://www.linuxquestions.org/questions/programming-9/sed-error-command-c-expects-%5C-followed-by-text-under-os-x-but-works-in-linux-730997/
42
+ http://www.linuxquestions.org/questions/programming-9/sed-error-command-c-expects-%5C-followed-by-text-under-os-x-but-works-in-linux-730997/
43
+
44
+ [追記3]
45
+ 多くの皆様に回答していただき、大変感謝です!
46
+ どの回答も素晴らしく大変勉強になりました。
47
+ ベストアンサーを選ぶのが苦しかったのですが、shの範囲内でシンプルな書き方のできるedコマンドとsedのsコマンドの回答をベストアンサーにさせていただきました。
48
+ 個人的にはngyukiさんのsedを使わない別解が好きです^^
49
+ 実際の現場ではperlの回答を採用することになりそうですw

2

追記

2015/07/19 11:19

投稿

jollyjoester
jollyjoester

スコア1585

title CHANGED
File without changes
body CHANGED
@@ -35,4 +35,8 @@
35
35
  $ sed -i "" "1iTitle\n\nmessage : hogehoge\n" sample.txt
36
36
  sed: 1: "1iTitle\n\nmessage : ho ...": command i expects \ followed by text
37
37
  ```
38
- そしたらこんなエラーになってしまい、よくわからなかったので上記の回避策になった次第です。
38
+ そしたらこんなエラーになってしまい、よくわからなかったので上記の回避策になった次第です。
39
+
40
+ [追記2]
41
+ Mac(BSD)のsedのiコマンドで改行をうまく扱えないのはバグのようでした。2005年のバグが2009年時点でも未解決とコメントされていますが、現在でも未解決のようですね。
42
+ http://www.linuxquestions.org/questions/programming-9/sed-error-command-c-expects-%5C-followed-by-text-under-os-x-but-works-in-linux-730997/

1

追記

2015/07/19 10:57

投稿

jollyjoester
jollyjoester

スコア1585

title CHANGED
File without changes
body CHANGED
@@ -26,4 +26,13 @@
26
26
  rm -rf add.txt sample.txt.old
27
27
  ```
28
28
 
29
- もっといい方法をご存知の方、どうぞご教授お願いしますm(_ _)m
29
+ もっといい方法をご存知の方、どうぞご教授お願いしますm(_ _)m
30
+
31
+ [追記]
32
+ 最初sedでやろうとしたときはこんな感じでやりました。
33
+ (MacのsedはBSD系ということで-iの後ろの引数にバックアップファイルの拡張子を入れないといけないのですが、バックアップファイルはいらないので""にしてます。)
34
+ ```
35
+ $ sed -i "" "1iTitle\n\nmessage : hogehoge\n" sample.txt
36
+ sed: 1: "1iTitle\n\nmessage : ho ...": command i expects \ followed by text
37
+ ```
38
+ そしたらこんなエラーになってしまい、よくわからなかったので上記の回避策になった次第です。