我有一个文本文件,其中有数千个数据。例如。
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 命令的菜鸟,请就此帮助我。sed
awk
答案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”,并且只能在行首找到