回答編集履歴

2

sedコマンドでの出力について追記しました。

2020/03/27 00:53

投稿

Eggpan
Eggpan

スコア2736

test CHANGED
@@ -28,18 +28,22 @@
28
28
 
29
29
  ```bash
30
30
 
31
- abc="
31
+ cat hoge.txt | awk -v abc="$abc" '{sub("ABC", abc, $1); print $1}'
32
32
 
33
- aaa
33
+ ```
34
-
35
- bbb
36
-
37
- ccc
38
-
39
- "
40
34
 
41
35
 
42
36
 
37
+ 追記2:
38
+
39
+ sed利用の場合
40
+
41
+ ``` bash
42
+
43
- cat hoge.txt | awk -v abc="$abc" '{sub("ABC", abc, $1); print $1}'
43
+ sed "s/ABC/$(echo "$abc" | sed -z "s/\n/\\n/g")/" hoge.txt
44
44
 
45
45
  ```
46
+
47
+
48
+
49
+ Bashあまり得意ではないのでもっと良い書き方はあるかもしれません。

1

awkコマンドの場合を追記

2020/03/27 00:53

投稿

Eggpan
Eggpan

スコア2736

test CHANGED
@@ -19,3 +19,27 @@
19
19
  perl -pe "s/ABC/${abc}/" hoge.txt
20
20
 
21
21
  ```
22
+
23
+
24
+
25
+ 追記:
26
+
27
+ awkの場合だと下記のような記述で出力できました。
28
+
29
+ ```bash
30
+
31
+ abc="
32
+
33
+ aaa
34
+
35
+ bbb
36
+
37
+ ccc
38
+
39
+ "
40
+
41
+
42
+
43
+ cat hoge.txt | awk -v abc="$abc" '{sub("ABC", abc, $1); print $1}'
44
+
45
+ ```