проверка шаблона с помощью команды AWK

Вы можете добавить параметр --exclude='*/'в параметры rsync, чтобы предотвратить синхронизацию каталогов.

0
29.10.2020, 19:34
1 ответ

Когда вы говорите \w+, я предполагаю, что вы на самом деле имеете в виду [a-zA-Z], поскольку \wтакже соответствует числам и знакам подчеркивания, и похоже, что вам нужны только буквы. На самом деле, исходя из вашего примера, вам могут понадобиться только заглавные буквы. Наконец, и снова я предполагаю, что, поскольку вы не объясняете, похоже, вы хотите исключить случаи, когда длина строки букв не составляет ровно 3 символа. Если да, вот способ сделать то, что вы хотите в Perl:

$ perl -lne '/^(.*?),[A-Z]{3},\d{2},/; $start=$1; @k=(/,(\w{3},\d{2})/g); print "$start,", join("|",@k)' file
1,123-456,IND,91|UAE,97|USA,01
3,345-678,AUS,61|SLA,94|NZW,64

В качестве альтернативы, если вы хотите найти совпадения только после второго поля, вы можете сделать это в awk:

$ awk -F, -v OFS="," '{
                        for(i=3;i<=NF;i+=2){
                        if ($i~/^[A-Z]{3}$/ && $(i+1)~/^[0-9]{2}$/){
                            k ? k=k"|"$i","$(i+1) : k=$i","$(i+1); 
                        }
                       } print $1,$2,k; k=""}' file
1,123-456,IND,91|UAE,97|USA,01
3,345-678,AUS,61|SLA,94|NZW,64
2
18.03.2021, 22:53

Теги

Похожие вопросы