Почему мой Regex в Awk Script не работает? - PullRequest
0 голосов
/ 15 апреля 2020

Я неправильно использую регулярные выражения в awk? Я не могу понять, почему это не работает внутри файла .awk.

Я ввожу это, например, как один вкладыш, чтобы подсчитать

cat input.txt | awk '$1 ~ /^-/ && $8 ~ /^./ {totalFiles+=1;} END {print totalFiles}'

И все же это возвращает правильные результаты.

this is the returned value for files in the one liner
Files: 708

вот ввод, который я положил для файла awk

test2.awk input.txt

, и то, что я пытаюсь получить, выглядит примерно так

total users:    13
total files
     all/hidden: ( 708 / 16 )
total dirs:     38
total other:    11
file storage:   3472081 B

Но когда я запускаю это, регулярное выражение не работает, и он считает каждую строку один раз, возвращая количество строк, а это не то, что я хотел бы.

#!/usr/bin/awk -f 
BEGIN {
    totalFileRegex = "/^-/ && $8 ~ /^./"
    NR>1
}
#Body
{
    users[$3]
    totalStorage+=$5
    $1 ~ totalFileRegex
    totalFiles+=1
    $8 ~ /^\.[[:alpha:]]/ totalHidenFiles++
    $1 ~ /^d/ totalDirectories++
    $1 ~ /^srw/ totalOtherFiles++

}

END {
    for (u in users) {totalUsers++}
    # print each user's data
    # print each username
    # print each users dir count
    # print each users hidden file count

    print totalUsers
    print totalDirectories
    print totalFiles
    print totalHidenFiles
    print totalStorage
    print totalOtherFiles


}

Вот вывод

2 # total users
6 # wrong
6 # wrong 
6 # wrong
70771 # total storage
6 # wrong 

Вот вход, с которым я работаю

total 17160
drwxrwxrwt 98 root   root      528384 2020-04-07 13:38:14 . 
drwxr-xr-x 26 root   root        4096 2018-09-04 10:50:29 ..
drwx------  2 pmp099 students    4096 2020-03-03 20:57:31 appInsightsnodeAIF-444c3af9-8e69-4462-ab49-4191e6ad1916
-rw-------  1 mce237 students     199 2020-03-01 18:41:59 .build1276786824731864129.log
-rw-------  1 mce237 students     199 2020-03-01 20:18:42 .build291177188595028335.log
-rw-------  1 mce237 students     199 2020-03-01 20:10:44 .build4195866878600813549.log
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...