No.3ベストアンサー
- 回答日時:
del_startとdel_endは1回づつしか現れないのでしょうか。
だとしたら、これでいけます。
sed '/del_start/,/del_end/d' ファイル名 > 出力ファイル名
この回答への補足
回答ありがとうございます。del_startとdel_endは1回づつです。えっ、こんな簡単にできちゃうんですか!!
明日確認して明後日以降に結果とお礼を書き込みます。
うまくいきました。これだけでよかったんですね。ちなみにdel_startとdel_endが2回以上あってもちゃんと消せました。気の利いた簡単な解決策を教えていただけてよかったです。a-saitohさんありがとうございました。
No.4
- 回答日時:
awk -f skip.awk data.txt
----------------------------------------------------------------
/^del_start$/,/^del_end$/{ next }
{ print }
----------------------------------------------------------------
一行に目印がdel_start だけが含まれているという条件です。
文中に含まれるというのであれば
/del_start/,/del_end/{ next }
にして下さい。
これも簡単なやりかたですね。awkやsedは使いこなせるようになればシェルはずいぶんシンプルになるものなんですね。勉強になりました。
BLUEPIXYさんありがとうございました。
No.2
- 回答日時:
こんなものでどうでしょう。
---Skip.awk----
BEGIN{
ON = 1 # 初期設定
OFF = 0
Start="del_start"
End ="del_end"
Skip =OFF # 初期状態は、スキップしない
}
{
if($0~Start) { # "del_start"を見つけると出力抑止(スキップする)
Skip=ON
}
if(Skip==OFF) { # スキップしない行なので出力する
print $0
}
if($0~End) { # "del_end"を見つけると出力を再開
Skip=OFF
}
}
gawk -f skip.awk data.dat data1.dat > result.dat
で、result.datにdata.dat、data1.datのdel_startからdel_endまでの行が消されたもの
をリダイレクトで作成します。
但し、del_startとdel_endの関係は
1)必ず一対一で対応している事。対応していない場合の動作検証はしていません。
2)ネストした場合の動作検証していない。
⇒この辺は、厳密な仕様を示していただけれは工夫してもいいですが、但し有料で(笑)
一部、細かいところを説明すると
if($0~Start)とは、if($0~"del_start")と同じです。
$0は行全体を指すので、行に"del_start"が正規表現的に含まれていれば真になります。
ここで、Skip=ONとして出力を止めて、対象行以降を排除します。
if($0~End)とはif($0~"del_end")と同じです。
行に"del_end"が正規表現的に含まれていれば真になります。
ここでSkip=OFFとして出力を再開します。
No.1
- 回答日時:
こんなものでどうでしょう。
---Skip.awk----
BEGIN{
ON = 1 # 初期設定
OFF = 0
Start="del_start"
End ="del_end"
Skip =OFF # 初期状態は、スキップしない
}
{
if($0~Start) { # "del_start"を見つけると出力抑止(スキップする)
Skip=ON
}
if(Skip==OFF) { # スキップしない行なので出力する
print $0
}
if($0~End) { # "del_end"を見つけると出力を再開
Skip=OFF
}
}
gawk -f skip.awk data.dat data1.dat > result.dat
で、result.datにdata.dat、data1.datのdel_startからdel_endまでの行が消されたもの
をリダイレクトで作成します。
但し、del_startとdel_endの関係は
1)必ず一対一で対応している事。対応していない場合の動作検証はしていません。
2)ネストした場合の動作検証していない。
⇒この辺は、厳密な仕様を示していただけれは工夫してもいいですが、但し有料で(笑)
一部、細かいところを説明すると
if($0~Start)とは、if($0~"del_start")と同じです。
$0は行全体を指すので、行に"del_start"が正規表現的に含まれていれば真になります。
ここで、Skip=ONとして出力を止めて、対象行以降を排除します。
if($0~End)とはif($0~"del_end")と同じです。
行に"del_start"が正規表現的に含まれていれば真になります。
ここでSkip=OFFとして出力を再開します。
この回答への補足
すばやい回答と丁寧な説明をありがとうございます。ON/OFFのスイッチを使うんですね。なるほど。明日試して見ます。明日は書き込みができないかもしれないので、明後日以降に結果とお礼を書き込みます。
補足日時:2006/09/29 01:19うまくいきました。del_startとdel_endが一対一対応していないとかのエラー処理までは考えなくていいのでこれで充分です。dennou2000さんありがとうございました。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- その他(プログラミング・Web制作) awkの BEGIN{RS=""} で空行を削除できるが、削除できる仕組みが分からない。 1 2023/05/02 14:14
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- その他(プログラミング・Web制作) awkの$NR 2 2022/10/24 11:11
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/15 15:48
- その他(プログラミング・Web制作) awkの文字列比較はPOSIXロケールまたはCロケールにおいてバイナリ値の比較に使えるか gawkな 1 2023/04/22 09:21
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/07/21 09:42
- Visual Basic(VBA) エクセルのマクロについて教えてください。 1 2023/08/10 11:34
- フリーソフト サクラエディタの正規表現(grep機能)の使い方 3 2022/06/22 10:29
- Excel(エクセル) Excel VBA 空白行があるセル範囲に色を付ける 3 2022/06/13 15:58
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
すみません!パソコン開いて電...
-
このパソコンは重量が689gと非...
-
どのストレージが一番高い所か...
-
iCloudに6千個くらいデータがあ...
-
数日前から急にFBが前に進まず...
-
使用中のセクタが不良セクタに...
-
SSDのデータがビット落ちにより...
-
Crystal DiskInfoの生の値は既...
-
SSDにTRIMってした方が良いので...
-
CrystalDiskInfoは大企業で使わ...
-
現在と現在から20年前の2003〜2...
-
ファイルを記録してあるセクタ...
-
mail distributor エラー発生し...
-
CrystalDiskInfoの現在地や最悪...
-
インストールが不要なソフトは...
-
SSDに不良セクタが発生したら、...
-
Excelファイルのシール1.2.3と...
-
差分バックアップや増分バック...
-
タッチパッドはチャタリングは...
-
SSDにTRIMをしたいのですがSSD...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Windows 11の品質、評判は・・...
-
メーカー製のノートパソコンが...
-
ベリファイは光学ディスクには...
-
ベリファイよりコンペアの方が...
-
バグの被害に遭わないようにす...
-
PCの寿命は平均3年?:本当で...
-
USBポートのイベントログが大量...
-
住所から直線距離を算出したい...
-
インストールが不要なソフトは...
-
HEVCのファイルの拡張子って何...
-
ソフトが正常に動作しなくなっ...
-
回復ドライブを作成する前にUSB...
-
2つのフォルダ内にある全てのフ...
-
日本語版Windowsで英語のソフト...
-
高速スタートアップは無効にし...
-
パーティションで分ける事によ...
-
メーカー製のノートパソコンに...
-
ソフトはVectorでダウンロード...
-
回復ドライブをUSBメモリで作っ...
-
インストールが必要なソフトと...
おすすめ情報