测试人社区

awk提取问题

目的:想提取/etc/passwd文件中的第6列
测试服务器上运行awk -F '[:/]+' '{print $6}' /etc/passwdawk -F '[:/]+' '{print $(NF-2)}' /etc/passwd 二种方式结果不一样,截取部分结果如下:
方法一正向提取 输出正确 符合预期
image

方法二反向提取 输出不符合预期
image

怀疑数据过大导致结果不一样,重新创建新文件demo.txt
image

用上述两种方式提取,结果都符合预期
image

疑问:为什么数据多了会报错

你没发现你的命令二最后都报错了嘛,你打印下NR就知道多少行有问题了

image
这里表示错误行数

重新执行awk 'NR>2064{print $0}' /etc/passwd|less
image

2065行确实格式不一样

谢谢老师!