たとえば、データを含むファイルがあります。
[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
行の内容を一致させるためにより複雑な方法を使用できますが、問題は素晴らしく簡単な角かっこ表現として扱われます。