сохранять строки только тогда, когда столбец имеет определенные значения в файле - PullRequest
0 голосов
/ 19 октября 2018

У меня есть файл, в котором мне нужно сохранить строки, если значение первого столбца равно марке, городу и почтовому индексу. Поэтому для этого файла

    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 голосов
/ 19 октября 2018

Сохраняйте строки, в которых первая запись соответствует марке, городу или почтовому индексу:

awk

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

sed

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

awk для чтения определений из файла

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

Для этого требуются уникальные значения в values.txt.

0 голосов
/ 20 октября 2018

Grep намного проще для этого приложения.Просто создайте файл с именем «words», содержащий каждое интересующее вас слово в отдельной строке.Тогда:

cat words | while read interesting_word; do grep "^$interesting_word" myfile; done
0 голосов
/ 19 октября 2018

awk на помощь!

$ awk 'NR==FNR{v[$1]; next} $1 in v' values.txt FS=, datafile
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...