何千ものデータがあるテキストファイルがあります。例えば。
id=row_value
profile=row_value
name=row_value
email=row_value
address=row_value
id=row_value2
profile=row_value2
name=row_value2
email=row_value2
address=row_value2
. . .
. . .
. . .
そのファイルからすべてのname
とemail
を抽出したい。例えば。
name=row_value
email=row_value
name=row_value2
email=row_value2
. . .
. . .
. . .
注:name
とemail
の各ペアの後の新しい行に注意してください。
grep
、sed
、awk
などの一部のLinuxコマンドで実行されることはわかっています。LinuxコマンドのNoobです。
これを試して
grep "name\|email" <Path to your File>
良心をきれいに保つために、ここにawk
バージョンがあります:
$ awk '$0~/name/||/email/ {if ($0~/email/) $3="\n"; print $0}' testerfile.txt
name=row_value
email=row_value
name=row_value2
email=row_value2
そして、これはドットを追加します:
awk '$0~/name/||/email/ {if ($0~/email/) $3="\n"; print $0}; $0~/^.[[:blank:]].[[:blank:]]./ {print} ' testerfile.txt
出力:
$awk '$0~/name/||/email/ {if ($0~/email/) $3="\n"; print $0}; $0~/^.[[:blank:]].[[:blank:]]./ {print} ' testerfile.txt
name=row_value
email=row_value
name=row_value2
email=row_value2
. . .
. . .
. . .
最初のバージョンのはるかに単純なバージョン:
awk '/^name/; /^email/ {$3="\n"; print}' testerfile.txt
アンカーされた正規表現は、テキスト内の他の場所で、行の先頭でのみ「名前」および「電子メール」という単語を見つけることを防ぎます