AWKには、行番号ではなく行のテキストに基づいて行範囲を検索するSEDに似た機能がありますか?

AWKには、行番号ではなく行のテキストに基づいて行範囲を検索するSEDに似た機能がありますか?

回避策:ファイルは、LF改行の代わりにCRを使用して保存されます。 Mosvyはこの点を指摘しましたが、回答ではなくコメントのみを投稿したため、原因を特定して問題を解決するのに役立つことを正式に監査することはできません。

mosvyさん、ありがとう。再度来たら、私が親指を立てるように回答を投稿してください。

SEDには以下があるようです。

sed '3,10d;/<ACROSS>/,$d' input.txt > output.txt

(3-10行を削除してから、「<ACROSS>」を含む行からファイルの終わりまで削除し、出力を作成します。)

ただ試しても:

sed '3,10d' input.txt > output.txt

しかし、何らかの理由で私のMacでは、どちらの方法も機能しないようです。

何をもっと試すべきかわかりません。

AWKにも似たようなものがあってほしいです。

修正する:

私が入力したとき:

sed '3,10d' input.txt > output.txt

3~10行は削除されません。ただ、ファイル全体をoutput.txtとして返します。

私が試したとき:

sed '/<ACROSS>/,$d' input.txt > output.txt

Output.txt が空です。

また、私は10.9.4を使用しています。

**アップデート2:

ありがとう、モビー! !ご意見に賛成投票ができたらと思います。これがトラブルシューティングです。

ファイルは、LF改行の代わりにCRとして保存されました。

変換するとすべて解決されましたね。

貢献してくれた皆さんに感謝します。

ベストアンサー1

/usr/bin/sed '3,10d'私のMac(Mojave)でうまく動作します。それにもかかわらず、awkを使用すると:

awk '(NR >= 3) && (NR <= 10) {next} /<ACROSS>/{exit} 1'

...行番号が3〜10の場合、行をスキップして行が行に達すると<ACROSS>終了します(他のすべての項目は印刷されます)。

おすすめ記事