特定値から特定値へ grep

特定値から特定値へ grep

たとえば、データを含むファイルがあります。

[2023-03-21 12:27:19 +0000] some_data
[2023-03-21 12:27:19 +0000] some_data
[2023-03-22 12:27:19 +0000] some_data
[2023-03-23 12:27:19 +0000] some_data
[2023-03-23 12:27:19 +0000] some_data
[2023-03-25 12:27:19 +0000] some_data
[2023-03-26 12:27:19 +0000] some_data
[2023-03-29 12:27:19 +0000] some_data
[2023-03-29 12:27:19 +0000] some_data
[2023-03-29 12:27:19 +0000] some_data
[2023-03-29 12:27:19 +0000] some_data

次の値を含むすべての行をgrepしたいと思います。2023-03-22到着2023-03-26

だから私はそれに合わせて行きたいです。

[2023-03-22 12:27:19 +0000] some_data
[2023-03-23 12:27:19 +0000] some_data
[2023-03-23 12:27:19 +0000] some_data
[2023-03-25 12:27:19 +0000] some_data
[2023-03-26 12:27:19 +0000] some_data

grep、sed、awkを使ってこれを行うにはどうすればよいですか?

別のケースがあります:

データを含むファイルがあります。

[2023-03-21 00:45:20 +0000] some_data
[2023-03-21 01:10:11 +0000] some_data
[2023-03-21 02:04:56 +0000] some_data
[2023-03-21 12:09:15 +0000] some_data
...
...
in this part the lines with the next data with some_data
...
...
[2023-03-23 21:40:19 +0000] some_data
[2023-03-23 22:15:11 +0000] some_data
[2023-03-23 23:40:06 +0000] some_data

どのようにラインをgrepしますか?[2023-03-21 01:10:11 +0000]some_data[2023-03-23 22:15:11 +0000] Some_data

おそらくgrepに-nフラグを使用できますか?文字列の数[2023-03-21 01:10:11 +0000]を取得し、-nフラグを使用して[2023-03-23 22:15:11 +0000]の値をgrepします。そのコマンドは私にこの行の行番号を返します。

行数がわかっている場合は、特定の行から特定の行まで、多数の日付をどのように取得できますか?

ベストアンサー1

これを行う簡単な方法は、その場所に表示したい文字を「角かっこ式」のメンバーとして指定することです。

grep '2023-03-2[23456]' file_name

ソート/組み合わせスキーム(日付など)で連続した文字セットを見つけるときは、角かっこ式に範囲を使用できます。

grep '2023-03-2[2-6]' file_name

行の内容を一致させるためにより複雑な方法を使用できますが、問題は素晴らしく簡単な角かっこ表現として扱われます。

おすすめ記事