繁体   English   中英

如何使用grep命令在列中打印由搜索关键字产生的行,

[英]how to print a line resulting from a search keyword in a column using grep command,

这是filename.csv文件的示例

"Sort Order","Common Name","Formal Name","Type","Sub Type"

"1","Afghanistan","Islamic State of Afghanistan","Independent State"    
"2","Albania","Republic of Albania","Independent State"    
"3","Algeria","People's Democratic Republic of Algeria","Independent State"    
"4","Andorra","Principality of Andorra","Independent State"    
"5","Angola","Republic of Angola","Independent State"

那么用grep命令搜索通用名称的安哥拉并像这样打印它是什么:

"5","Angola","Republic of Angola","Independent State"

我知道我们可以使用:

grep '"Algeria"' filename.csv

但是,如果我要更具体些。 假设阿尔及利亚可能存在于其他列中,但是我们只需要在“通用名称”列中打印一个即可。

我试过了

grep '"Common Name | Algeria"' filename.csv

似乎不起作用。

您可以尝试使用以下grep命令在第二列中打印包含字符串Angola的行。

grep -E '^"[^"]*","Angola"' file

这可以通过awk轻松完成,

awk -F, '$2=="\"Angola\""' file

尝试awk

awk -F"," '$2~/Algeria/' file

使用cut命令,

 grep Algeria filename.csv|cut -f2 -d','|awk -F '[""]' '{print $2}'

输出:

Algeria

这是我在grep添加的所有命令的解释,并丢弃了其中使用的一些不必要的引号。

cut命令:

-f它将根据定界符提取第二列

-d它将选择定界符,即:在这里,

awk命令:

它将提取两个"" (块引号)之间的值并进行打印。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM