@brar

Как скопировать строки по маске в новый файл целиком?

Коллега majetree дал решение до этого. Но, так как, мною был вопрос не четко сформулирован, то осталось кое-что еще спросить. Собственно, вопрос создаю для него, чтобы отметить его ответ и тут решением.
по команде
awk -v N=1 -F"," '{print $N}' pro3.csv | grep -E '^[0-9]{11}$' >> proOUT.csv

В новый файл копируется лишь выборка значений колонки1.
А можно сделать так, чтобы копировались все строки полностью, где есть совпадения?
Таким образом, чтобы полученный файл выглядел вот так:
Идентификатор,Длина,Вес
00000002406,2,1
00000000974,5,1
00000001261,2,н.в
00000000980,7,1
00000000987,11,8
00000003281,4,5
  • Вопрос задан
  • 544 просмотра
Решения вопроса 2
fox_12
@fox_12
Расставляю биты, управляю заряженными частицами
Как вариант простым однострочником на перле вполне ваша задача решается:
cat pro3.csv | perl -e 'while(<>){ @words=split(/,/, $_); {if(@words[1]=~/^\d{11}$/){ print $_; }}}' > proOUT.csv

Индекс у words[1] - номер столбца, в котором ищете 11-значное числовое значение, начиная с 0
Ответ написан
xotkot
@xotkot
хорошо есть и хорошо весьма
предлагаю поставить gawk (gnu awk) и не мучатся :)
если убунту то смотри здесь - https://www.howtoinstall.co/en/ubuntu/trusty/gawk

тогда достаточно будет просто убрать вывод конкретного столбца заменив print $N на просто print:
$ head -n1 pro3.csv > proOUT.csv
$ awk -v N=1 -F"," '$N ~ /^[0-9]{11}$/ {print}' pro3.csv >> proOUT.csv
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы