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

質問編集履歴

2

文法修正、試行追記

2020/04/05 09:40

投稿

yrk
yrk

スコア6

title CHANGED
@@ -1,1 +1,1 @@
1
- 複数ファイルに対して指定文字列が含まれる次の行以降を削除したい
1
+ 複数ファイルに対して指定文字列が最初にマッチした行2後から最終行までを削除したい
body CHANGED
@@ -1,4 +1,5 @@
1
+ (2020/04/05 18:30旧タイトル[複数ファイルに対して指定文字列が含まれる次の行以降を削除したい]から修正)
1
- ### 複数ファイルに対して指定文字列が含まれる次の行以降を削除したい
2
+ ### 複数ファイルに対して指定文字列が最初にマッチした行2後から最終行までを削除したい
2
3
 
3
4
  あるディレクトリに複数個ある指定書式のテキストデータを、条件に合わせて一括置換したいと考えています。
4
5
  ###テキストの形式
@@ -23,7 +24,7 @@
23
24
 
24
25
  ```
25
26
 
26
- このような日付 都市が一行おきにあるsample.txtの最初に1231がヒットした次の行以降を削除したく、
27
+ このような日付 都市が一行おきにあるsample.txtの最初に1231が~~(18:30修正)ヒットした次の行以降~~マッチした行の2行後から最終行までを削除したく、
27
28
  この例ですと20200111 Matsuyama以降を削除したいです。
28
29
  (15:49追記)1231の次にどの日付が来るかはランダムです。
29
30
 
@@ -49,6 +50,11 @@
49
50
  4, cat test.txt | sed -e "/1231/,$ d" -e "/1231/,+1p"
50
51
  削除が先に行われるのでマッチする行+1行を出力が反映されなかった。
51
52
 
53
+ (18:30追記)
54
+ 5, find . -name "*.txt" | xargs sed -i "/1231/q"
55
+ 20200111 Matsuyama が残らない、複数ファイルに適応時に1ファイルしか変更が反映されない。
56
+
57
+
52
58
  ### 環境
53
59
  Ubuntu 16.04 LTSで実行しています。
54
60
  上記はググッて見つけた例をの試行錯誤で切り貼り・改変してみたものです。

1

書式条件の追記、試行の追記

2020/04/05 09:40

投稿

yrk
yrk

スコア6

title CHANGED
File without changes
body CHANGED
@@ -25,8 +25,8 @@
25
25
 
26
26
  このような日付 都市が一行おきにあるsample.txtの最初に1231がヒットした次の行以降を削除したく、
27
27
  この例ですと20200111 Matsuyama以降を削除したいです。
28
+ (15:49追記)1231の次にどの日付が来るかはランダムです。
28
29
 
29
-
30
30
  ### 試したこと
31
31
  1, find . -name "*.txt" | xargs sed -i "/1231/,$ d"
32
32
  20191231 Nagoya から削除されてしまう
@@ -45,6 +45,10 @@
45
45
  419 + 2: 式に構文エラーがあります (エラーのあるトークンは "419 + 2")
46
46
  とエラーが出る。
47
47
 
48
+ (15:49追記)
49
+ 4, cat test.txt | sed -e "/1231/,$ d" -e "/1231/,+1p"
50
+ 削除が先に行われるのでマッチする行+1行を出力が反映されなかった。
51
+
48
52
  ### 環境
49
53
  Ubuntu 16.04 LTSで実行しています。
50
54
  上記はググッて見つけた例をの試行錯誤で切り貼り・改変してみたものです。