teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

3

追加

2018/10/18 13:01

投稿

otn
otn

スコア86363

answer CHANGED
@@ -8,4 +8,15 @@
8
8
  ```Bash
9
9
  yes "" | head -$M > work
10
10
  cat aaa.txt | sed ${N}rwork
11
+ ```
12
+ #追加
13
+ sedでカウンターを設けるのは難しい。
14
+ ```Bash
15
+ N=4
16
+ M=4
17
+ let N1=N+1
18
+ let M1=M-1
19
+ ( printf "%${M1}s\n" ""
20
+ cat aaa.txt ) |
21
+ 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 }
11
22
  ```

2

間違い

2018/10/18 13:01

投稿

otn
otn

スコア86363

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

1

追加

2018/10/18 12:24

投稿

otn
otn

スコア86363

answer CHANGED
@@ -1,4 +1,9 @@
1
1
  awkでそのまま書くと、
2
2
  ```Bash
3
3
  awk NR==$N'{for(i=0;i<'$M';i++)print""}{print}'
4
+ ```
5
+ sedでは良い方法がないですね。挿入する物をファイルとして作っておくくらい。
6
+ ```Bash
7
+ yes "" | head -$M > work
8
+ cat aaa.txt | sed ${N}rwork
4
9
  ```