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.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.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ランキング
-
授業の内容なのですがほんとに...
-
情シスに異動するには。 非情シ...
-
情報の問題です。 サンプリング...
-
ヤフーメールの設定のなかに、...
-
中華ゲーム機のGame Console R3...
-
スクリープロットの見方。この...
-
ソフトが安定版かどうかを知る...
-
ソフトは安定版しか使うべきで...
-
PowerShellの使い方を学ぶのに...
-
ファイル構造が破損しているフ...
-
ソフトはVectorでダウンロード...
-
ストレージにお金をかけれるな...
-
2002年製のpcと2008製のpcがあ...
-
ソフトに致命的なバグがあるか...
-
Microsoftが非推奨にしてるかど...
-
Check Diskは定期的に実行した...
-
ファイルは何で構成されている...
-
SSDを定期的にデフラグした方が...
-
インストールが必要なソフトと...
-
マウスのカーソルは飛ぶ事があ...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
使用中のセクタが不良セクタに...
-
ファイル構造が破損しているフ...
-
すみません!パソコン開いて電...
-
現在と現在から20年前の2003〜2...
-
2つのファイルのバイナリをコン...
-
SSDを定期的にデフラグした方が...
-
どのストレージが一番高い所か...
-
AzureとOneDriveって何が違うの...
-
SSDに不良セクタがあるかどうか...
-
S.M.A.R.T.を見るのに1番有名な...
-
SSDに不良セクタが発生したら、...
-
次は、どこのメーカーのPCを買...
-
このパソコンは重量が689gと非...
-
ストレージの中に破損している...
-
SSDのデータがビット落ちにより...
-
SSDにTRIMをしたいのですがSSD...
-
コマンドプロンプトって「cmd」と...
-
SSDの不良セクタを代替セクタに...
-
SSDにTRIMってした方が良いので...
-
ファイルを記録してあるセクタ...
おすすめ情報