我正在使用Awk命令执行bash脚本来格式化带有一些用户信息的文件,并且在脚本的开头,我希望它说“如果第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
答案 0 :(得分:2)
在显示的Input_file中,我们要讨论的列是$2
而不是$1
,因此理想情况下应该是:
awk '$2 !~ /[a-z]{3}[0-9]{3}/{next}.........' Input_file
如果您要同时检查小写和大写字母,请尝试:
awk '$2 !~ /[a-zA-Z]{3}[0-9]{3}/{next}..........' Input_file