回答編集履歴

2

回答にバグがあったので追記修正

2017/10/28 08:36

投稿

dodox86
dodox86

スコア9183

test CHANGED
@@ -18,7 +18,7 @@
18
18
 
19
19
 
20
20
 
21
- $ sed -e 's/^[[:space:]]*//g' content.txt
21
+ $ sed -e 's/^[[:space:]][[:space:]]*//g' content.txt
22
22
 
23
23
  LINE1
24
24
 
@@ -34,20 +34,74 @@
34
34
 
35
35
 
36
36
 
37
+ **追記** 私の先の回答にバグがあったので修正させていただきました。
38
+
39
+
40
+
37
- **追記** 置換したいのであれば、例えば"PREFIX-"に置換するとして、
41
+ 置換したいのであれば、例えば"PREFIX-"に置換するとして、
38
42
 
39
43
  ```
40
44
 
41
- $ sed -e 's/^[[:space:]]*/PREFIX-/g' content.txt
45
+ $ sed -e 's/^[[:space:]][[:space:]]*/PREFIX-/g' content.txt
42
46
 
43
47
  PREFIX-LINE1
44
48
 
45
49
  PREFIX-LINE2
46
50
 
47
- PREFIX-LINE3
51
+ LINE3
48
52
 
49
53
  PREFIX-LINE4
50
54
 
51
55
  ```
52
56
 
53
57
  となります。
58
+
59
+ 元のテキストファイルがUTF-8だとして、スペースは20h, 全角のスペースだと e3h 80h 80hのシーケンスになるかと思うのですが、私のmac osxのターミナル環境下(LANG=ja_JP.UTF-8)ですとUTF-8全角スペースでもsedの[[:space::]]メタ文字指定で除去できてしまいましたね。
60
+
61
+ ```Bash
62
+
63
+ bash-3.2$ file content.txt
64
+
65
+ content.txt: UTF-8 Unicode text
66
+
67
+ bash-3.2$ cat content.txt
68
+
69
+ LINE1
70
+
71
+ LINE2
72
+
73
+ LINE3
74
+
75
+  LINE4
76
+
77
+      LINE5
78
+
79
+
80
+
81
+ bash-3.2$ od -t xC content.txt
82
+
83
+ 0000000 20 4c 49 4e 45 31 0a 20 20 4c 49 4e 45 32 0a 4c
84
+
85
+ 0000020 49 4e 45 33 0a 20 e3 80 80 4c 49 4e 45 34 0a e3
86
+
87
+ 0000040 80 80 e3 80 80 e3 80 80 e3 80 80 20 20 4c 49 4e
88
+
89
+ 0000060 45 35 0a 0a
90
+
91
+ 0000064
92
+
93
+ bash-3.2$ sed -e 's/^[[:space:]][[:space:]]*/PREFIX-/g' content.txt
94
+
95
+ PREFIX-LINE1
96
+
97
+ PREFIX-LINE2
98
+
99
+ LINE3
100
+
101
+ PREFIX-LINE4
102
+
103
+ PREFIX-LINE5
104
+
105
+ ```
106
+
107
+ 他の回答者様が暗にご指摘になっているように、行頭の空白文字の種類として何が入っているか、が問題ですね。

1

置換について追記

2017/10/28 08:36

投稿

dodox86
dodox86

スコア9183

test CHANGED
@@ -28,9 +28,25 @@
28
28
 
29
29
  LINE4
30
30
 
31
+ ```
32
+
33
+ となります。
31
34
 
32
35
 
33
36
 
37
+ **追記** 置換したいのであれば、例えば"PREFIX-"に置換するとして、
38
+
39
+ ```
40
+
41
+ $ sed -e 's/^[[:space:]]*/PREFIX-/g' content.txt
42
+
43
+ PREFIX-LINE1
44
+
45
+ PREFIX-LINE2
46
+
47
+ PREFIX-LINE3
48
+
49
+ PREFIX-LINE4
34
50
 
35
51
  ```
36
52