Linuxで指定した文字列の前後の行を表示する方法

この記事では、Linuxのコマンドラインで指定した文字列の前後の行を表示する方法について詳しく説明します。具体的なコード例とその解説、さらには応用例までを網羅的に解説していきます。

目次

基本的な方法: grepコマンドを用いる

`grep` コマンドは、ファイルの中から特定の文字列を検索するときによく使われます。オプションを使うことで、マッチした行だけでなく、その前後の行も表示することが可能です。

# 「example.txt」ファイル内で「target」にマッチする行とその前後1行ずつを表示
grep -C 1 'target' example.txt

オプションについて

– `-C` : 指定した数字の行数だけ、マッチした行の前後を表示します。

応用例

応用例1: awkを使用する方法

`awk` コマンドもテキスト処理で非常に強力です。これを用いることで、より高度な検索が可能です。

awk '/target/{for(i=NR-1;i<=NR+1;i++)a[i];} NR in a' example.txt

応用例2: sedコマンドを用いる方法

`sed` コマンドを用いると、行を編集しながらその前後の行を表示することもできます。

sed -n '/target/{x;1!p;g;$!N;p;D;}' example.txt

応用例3: Pythonスクリプトを作成する

Pythonで独自のスクリプトを作成して、同様の操作を行うこともできます。

import re

with open('example.txt', 'r') as f:
    lines = f.readlines()

for i, line in enumerate(lines):
    if re.search('target', line):
        print(lines[i-1:i+2])

応用例4: Perlでの実装

`perl` でも同様の操作が可能です。

perl -ne 'if(/target/) {print $prev . $_ . <>} $prev = $_;' example.txt

まとめ

Linuxでファイルの中から指定した文字列の前後の行を表示する方法は多く存在します。基本的な `grep` コマンドから、`awk` や `sed`, さらにはPythonやPerlでのスクリプト作成まで、状況やニーズに応じて選べる方法があります。これを機に、Linuxコマンドのスキルをさらに高めてください。

created by Rinker
オライリージャパン
¥3,080 (2024/07/05 02:35:21時点 Amazon調べ-詳細)

コメント

コメントする

目次