Linux:从文本文件提取数据

Linux:从文本文件提取数据

我有一个文本文件,其中有数千个数据。例如。

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..

我知道它将在一些 Linux 命令中完成,如,grep等等。我是 Linux 命令的菜鸟,请就此帮助我。sedawk

答案1

尝试这个

grep "name\|email" <Path to your File> 

答案2

为了保持良心的清白,这里有一个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

锚定正则表达式将阻止在文本的其他位置找到单词“name”和“email”,并且只能在行首找到

相关内容