仅当列在文件中具有某些值时才保留行

时间:2018-10-19 19:45:21

标签: awk sed

我有一个文件,如果第一列的值等于brand,city和zipcode,则需要保留行 所以对于这个文件

    product,0 0,no way
    brand,0 0 0,detergent
    product,0 0 1,sugar
    negative,0 0 1, sight
    city,0 0 2,grind
    zipcode,0 0 1,five

我将需要此输出

brand,0 0 0,detergent
city,0 0 2,grind
zipcode,0 0 1,five

如果保留值的数量从3增加到20-30,有效的方法是什么?我们可以使用具有我们需要保留的值的文件values.txt

   brand
   city
   zipcode

可以使用哪个?

3 个答案:

答案 0 :(得分:3)

@RolesAllowed({ "ROLE_VIEWER", "ROLE_EDITOR" }) public boolean isValidUsername2(String username) { //... } 来营救!

awk

答案 1 :(得分:0)

保留第一个记录与品牌,城市或邮政编码匹配的行:

awk

awk -F, '$1~/^(brand|city|zipcode)$/' file

sed

sed -r '/^(brand|city|zipcode),/!d' file

从文件中读取定义

awk -F, 'a[$1];FNR==NR{a[$1]=1}' values.txt file

这需要values.txt中的唯一值。

答案 2 :(得分:0)

Grep对于此应用程序来说要容易得多。只需创建一个名为“ words”的文件,即可在单独的一行中包含您感兴趣的每个单词。然后:

cat words | while read interesting_word; do grep "^$interesting_word" myfile; done