回答編集履歴
2
回答にバグがあったので追記修正
answer
CHANGED
@@ -8,7 +8,7 @@
|
|
8
8
|
LINE3
|
9
9
|
LINE4
|
10
10
|
|
11
|
-
$ sed -e 's/^[[:space:]]*//g' content.txt
|
11
|
+
$ sed -e 's/^[[:space:]][[:space:]]*//g' content.txt
|
12
12
|
LINE1
|
13
13
|
LINE2
|
14
14
|
LINE3
|
@@ -16,12 +16,39 @@
|
|
16
16
|
```
|
17
17
|
となります。
|
18
18
|
|
19
|
+
**追記** 私の先の回答にバグがあったので修正させていただきました。
|
20
|
+
|
19
|
-
|
21
|
+
置換したいのであれば、例えば"PREFIX-"に置換するとして、
|
20
22
|
```
|
21
|
-
$ sed -e 's/^[[:space:]]*/PREFIX-/g' content.txt
|
23
|
+
$ sed -e 's/^[[:space:]][[:space:]]*/PREFIX-/g' content.txt
|
22
24
|
PREFIX-LINE1
|
23
25
|
PREFIX-LINE2
|
24
|
-
|
26
|
+
LINE3
|
25
27
|
PREFIX-LINE4
|
26
28
|
```
|
27
|
-
となります。
|
29
|
+
となります。
|
30
|
+
元のテキストファイルがUTF-8だとして、スペースは20h, 全角のスペースだと e3h 80h 80hのシーケンスになるかと思うのですが、私のmac osxのターミナル環境下(LANG=ja_JP.UTF-8)ですとUTF-8全角スペースでもsedの[[:space::]]メタ文字指定で除去できてしまいましたね。
|
31
|
+
```Bash
|
32
|
+
bash-3.2$ file content.txt
|
33
|
+
content.txt: UTF-8 Unicode text
|
34
|
+
bash-3.2$ cat content.txt
|
35
|
+
LINE1
|
36
|
+
LINE2
|
37
|
+
LINE3
|
38
|
+
LINE4
|
39
|
+
LINE5
|
40
|
+
|
41
|
+
bash-3.2$ od -t xC content.txt
|
42
|
+
0000000 20 4c 49 4e 45 31 0a 20 20 4c 49 4e 45 32 0a 4c
|
43
|
+
0000020 49 4e 45 33 0a 20 e3 80 80 4c 49 4e 45 34 0a e3
|
44
|
+
0000040 80 80 e3 80 80 e3 80 80 e3 80 80 20 20 4c 49 4e
|
45
|
+
0000060 45 35 0a 0a
|
46
|
+
0000064
|
47
|
+
bash-3.2$ sed -e 's/^[[:space:]][[:space:]]*/PREFIX-/g' content.txt
|
48
|
+
PREFIX-LINE1
|
49
|
+
PREFIX-LINE2
|
50
|
+
LINE3
|
51
|
+
PREFIX-LINE4
|
52
|
+
PREFIX-LINE5
|
53
|
+
```
|
54
|
+
他の回答者様が暗にご指摘になっているように、行頭の空白文字の種類として何が入っているか、が問題ですね。
|
1
置換について追記
answer
CHANGED
@@ -13,7 +13,15 @@
|
|
13
13
|
LINE2
|
14
14
|
LINE3
|
15
15
|
LINE4
|
16
|
+
```
|
17
|
+
となります。
|
16
18
|
|
17
|
-
|
19
|
+
**追記** 置換したいのであれば、例えば"PREFIX-"に置換するとして、
|
18
20
|
```
|
21
|
+
$ sed -e 's/^[[:space:]]*/PREFIX-/g' content.txt
|
22
|
+
PREFIX-LINE1
|
23
|
+
PREFIX-LINE2
|
24
|
+
PREFIX-LINE3
|
25
|
+
PREFIX-LINE4
|
26
|
+
```
|
19
27
|
となります。
|