(Linux)foldコマンドでテキストを指定位置で改行する

3-2.加工

映画『デビルマン』(2004)を最近初めて見たのですが、まあ酷評どおりかなあと思いました。映画がとても長く感じます。
頑張って見たら何か得られるだろうと思い、最後まで視聴しました。そしたら、あれ、この子役どこかで。。。
染谷将太が出てるじゃないですか。この頃から才能見せていたんですね。

でも、私が興味があるのはやはり変身シーンのみでした。

変身シーンで大きな翼が広がったり畳まれたりしますが、今回は折り畳みコマンドfoldです。

foldコマンドで行を指定位置で改行してみましょう。 元になるテキストは下のようにseqで作っておきます。

~$ seq 51 100 | pr -t5J | tee sample.txt
51	61	71	81	91
52	62	72	82	92
53	63	73	83	93
54	64	74	84	94
55	65	75	85	95
56	66	76	86	96
57	67	77	87	97
58	68	78	88	98
59	69	79	89	99
60	70	80	90	100
~$ 

今作ったsample.txtの桁数を求めてみます。100のある行の桁数が一番長く、それ以外は-1桁ですね。
100のある行の桁数は、最大桁数を求めれば良いので、wc -Lを使います。

~$ wc -L sample.txt
35 sample.txt

35桁です。

では、foldコマンドで35桁を指定して改行してみます。当然桁数以内ですので、追加で改行されません。

~$ fold -w35 sample.txt
51	61	71	81	91
52	62	72	82	92
53	63	73	83	93
54	64	74	84	94
55	65	75	85	95
56	66	76	86	96
57	67	77	87	97
58	68	78	88	98
59	69	79	89	99
60	70	80	90	100
~$ 

では34桁を指定します。予想では100の間に改行が入り、10と0で別れますね。

~$ fold -w34 sample.txt
51	61	71	81	91
52	62	72	82	92
53	63	73	83	93
54	64	74	84	94
55	65	75	85	95
56	66	76	86	96
57	67	77	87	97
58	68	78	88	98
59	69	79	89	99
60	70	80	90	10
0
~$ 

予想通りでした。foldコマンドはたったこれだけのコマンドです。
-w以外のオプションとしては、-bで、こちらはByte指定です。
タブも1Byteとして数えます。3Byteを指定すると、

~$ fold -b3 sample.txt
51	
61	
71	
81	
91
52	
62	
72	
82	
92
53	
63	
73	
83	
93
54	
64	
74	
84	
94
55	
65	
75	
85	
95
56	
66	
76	
86	
96
57	
67	
77	
87	
97
58	
68	
78	
88	
98
59	
69	
79	
89	
99
60	
70	
80	
90	
100
~$ 

9Byteを指定してみます。

~$ fold -b9 sample.txt
51	61	71	
81	91
52	62	72	
82	92
53	63	73	
83	93
54	64	74	
84	94
55	65	75	
85	95
56	66	76	
86	96
57	67	77	
87	97
58	68	78	
88	98
59	69	79	
89	99
60	70	80	
90	100
~$ 

ああ、口直しに他の映画を見なければ。

コメント

  1. […] Linuxのmanの和訳ですが、邦題タイトルのように、直接的じゃないなあと思うことがよくあります。「foldコマンド」で使ったfoldのmanにも、説明が良く分からないオプションがありました。 […]

タイトルとURLをコピーしました