ONELINER为所有标识符以' 1'

时间:2014-11-22 16:53:32

标签: linux bash unix ubuntu

我必须编写一个ONELINER,它为所有标识符以“1”开头的组打印系统组及其标识符。

以下是我系统中各组的一些示例:

fuse:x:105:
messagebus:x:106:
ssl-cert:x:107:
lpadmin:x:108:piciu
scanner:x:109:saned
mlocate:x:110:
ssh:x:111:
utempter:x:112:
avahi-autoipd:x:113:
rtkit:x:114:
saned:x:115:
whoopsie:x:116:
avahi:x:117:
lightdm:x:118:
nopasswdlogin:x:119:
bluetooth:x:120:
colord:x:121:
pulse:x:122:
pulse-access:x:123:
piciu:x:1000:
sambashare:x:124:piciu
howard:x:1001:
penny:x:1002:
leonard:x:1003:
sheldon:x:1004:

我要打印:保险丝105消息总线106 ssl-cert 107等等leonard 1003 sheldon 1004

1 个答案:

答案 0 :(得分:2)

您可以使用非常简单的awk脚本

$ awk -F: '$3 ~ /^1/' input
fuse:x:105:
messagebus:x:106:
ssl-cert:x:107:
lpadmin:x:108:piciu
scanner:x:109:saned
mlocate:x:110:
ssh:x:111:
utempter:x:112:
avahi-autoipd:x:113:
rtkit:x:114:
saned:x:115:
whoopsie:x:116:
avahi:x:117:
lightdm:x:118:
nopasswdlogin:x:119:
bluetooth:x:120:
colord:x:121:
pulse:x:122:
pulse-access:x:123:
piciu:x:1000:
sambashare:x:124:piciu
howard:x:1001:
penny:x:1002:
leonard:x:1003:
sheldon:x:1004:
awk -F: '$3 ~ /^1/' input
fuse:x:105:
messagebus:x:106:
ssl-cert:x:107:
lpadmin:x:108:piciu
scanner:x:109:saned
mlocate:x:110:
ssh:x:111:
utempter:x:112:
avahi-autoipd:x:113:
rtkit:x:114:
saned:x:115:
whoopsie:x:116:
avahi:x:117:
lightdm:x:118:
nopasswdlogin:x:119:
bluetooth:x:120:
colord:x:121:
pulse:x:122:
pulse-access:x:123:
piciu:x:1000:
sambashare:x:124:piciu
howard:x:1001:
penny:x:1002:
leonard:x:1003:
sheldon:x:1004:

它的作用是什么?

  • -F:将字段分隔符设置为:

  • '$3 ~ /^1/'检查第三个字段,id是否以1

  • 开头