回答編集履歴

3

追加

2018/10/18 13:01

投稿

otn
otn

スコア84633

test CHANGED
@@ -19,3 +19,25 @@
19
19
  cat aaa.txt | sed ${N}rwork
20
20
 
21
21
  ```
22
+
23
+ #追加
24
+
25
+ sedでカウンターを設けるのは難しい。
26
+
27
+ ```Bash
28
+
29
+ N=4
30
+
31
+ M=4
32
+
33
+ let N1=N+1
34
+
35
+ let M1=M-1
36
+
37
+ ( printf "%${M1}s\n" ""
38
+
39
+ cat aaa.txt ) |
40
+
41
+ sed -e 1{ -e h -e d -e } -e ${N1}{ -e :loop -e -e 'a \' -e "" -e x -e "s/ //" -e x -e "t loop" -e }
42
+
43
+ ```

2

間違い

2018/10/18 13:01

投稿

otn
otn

スコア84633

test CHANGED
@@ -2,9 +2,13 @@
2
2
 
3
3
  ```Bash
4
4
 
5
- awk NR==$N'{for(i=0;i<'$M';i++)print""}{print}'
5
+ awk '{print}NR=='$N'{for(i=0;i<'$M';i++)print""}'
6
6
 
7
7
  ```
8
+
9
+ (訂正:↑処理順序を間違えていたので修正)
10
+
11
+
8
12
 
9
13
  sedでは良い方法がないですね。挿入する物をファイルとして作っておくくらい。
10
14
 

1

追加

2018/10/18 12:24

投稿

otn
otn

スコア84633

test CHANGED
@@ -5,3 +5,13 @@
5
5
  awk NR==$N'{for(i=0;i<'$M';i++)print""}{print}'
6
6
 
7
7
  ```
8
+
9
+ sedでは良い方法がないですね。挿入する物をファイルとして作っておくくらい。
10
+
11
+ ```Bash
12
+
13
+ yes "" | head -$M > work
14
+
15
+ cat aaa.txt | sed ${N}rwork
16
+
17
+ ```