您好我正在尝试使用awk获取用户名列的值。
Username User ID User RID User Info Default Group Home Directory System shell Additional Groups Last Modified
------------ ------- -------- --------- ------------- ------------------ ------------ ----------------- -------------
cifsusr 2006 2001 cifsgrp /home/cifsusr /bin/false 1384753795319
releaseuser2 2005 2005 releasegr /home/releaseuser2 /bin/false 1384512529604
reus1 2009 2002 regr /home/reus1 /bin/false 1384511241736
reus2 2003 2003 regr /home/reus2 /bin/false 1384511283150
test usr11 2007 2006 cifsgrp /home/test usr11 /bin/false 1384773833130
test_usr00 2002 2004 cifsgrp /home/test_usr00 /bin/false 1384773358129
但每次尝试时我都错过了一个中间有空格的用户名, 任何帮助将不胜感激。
答案 0 :(得分:1)
由于每列的宽度都是固定的,因此可以使用带有-c
选项的cut命令。使用您的文件
$ cut -c 1-14 file
Username
------------
cifsusr
releaseuser2
reus1
reus2
test usr11
test_usr00
或者使用awk,您可以使用substr
功能:
awk '{print substr($0,1,14)}' file
答案 1 :(得分:1)
如果您的用户名列不会超过标题-------
(第2行),则可以使用此单行
awk 'NR==2{l=length($1);next}$0=substr($0,1,l)' file
它假定文本格式正确。但是,用户名的长度可以是变量。不需要硬编码。
输出:
cifsusr
releaseuser2
reus1
reus2
test usr11
test_usr00