Выполнение команды awk для условного оператора - PullRequest
0 голосов
/ 07 октября 2019

Я делаю сценарий bash, используя команду Awk, чтобы отформатировать файл с некоторой пользовательской информацией, и в начале сценария я хочу сказать: «если значение в столбце 1 не в формате abc123,пропустите эту строку. Кажется, она не работает.

У меня было это раньше:

$1=="UID" || $1=="rslavin" {
  next
}

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

Итак, вот что я пробовал совсем недавно:

$1!=([a-z]{3}[0-9]{3}) {

 next

}

Входной файл выглядит так:

1 UID PID PPID C STIME TTY TIME CMD
2 adz110 5344 5334 0 08:47 pts /2 00:00:00 bash
3 dmq292 6908 6854 0 Jun04 pts /1 00:00:00 bash
4 adz110 7227 7150 0 Jul11 pts /9 00:00:00 who
5 erg474 7466 7461 0 08:54 pts /10 00:00:00 ls
6 dmq292 7966 7960 0 Jun04 pts /13 00:00:00 assign1 . sh if of
7 xle135 8983 8636 0 08:59 pts /15 00:00:00 ssh ctf . cs . utsarr . net
8 zeh458 9057 1980 0 08:59 pts /7 00:00:00 vim prog . c
9 rslavin 9150 9139 0 08:59 pts /16 00:00:00 ps - af
10 xle135 8636 8628 0 08:58 pts /15 00:00:00 bash

1 Ответ

2 голосов
/ 07 октября 2019

С вашим показанным Input_file столбец, о котором мы говорим, это $2 NOT $1, поэтому в идеале это должно быть:

awk '$2 !~ /[a-z]{3}[0-9]{3}/{next}.........' Input_file

Также, если вы хотите проверить строчные и заглавные буквызатем попробуйте:

awk '$2 !~ /[a-zA-Z]{3}[0-9]{3}/{next}..........'  Input_file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...