我有一些awk用于解析CSV文件的脚本.我注意到,如果一个单元格为空,awk只需移动到下一个单元格.这意味着,如果我要求它读取第4列,但该单元格为空,则会打印第5列的数据,例如:
echo "1@2@3@@5" | awk -F "@*" '{print $4}'
Run Code Online (Sandbox Code Playgroud)
我的预期结果是它什么都不打印,因为第4列是空的.
awk跳过第4列?awk不忽略空列?问题不是你的想法.awk并没有忽略空单元格; 它将该行解析为4个字段而不是5个字段.
[me@home]$ echo "1@2@3@@5" | awk -F "@*" '{print NF}'
4
Run Code Online (Sandbox Code Playgroud)
这是监守你使用@*作为你的字段分隔符,它允许一个或多个连续@作为字段分隔符(@,@@,@@@,...都是有效的字段分隔符).
请尝试使用-F "@".
[me@home]$ echo "1@2@3@@5" | awk -F "@" '{print NF}'
5
[me@home]$ echo "1@2@3@@5" | awk -F "@" '{print $4}'
[me@home]$ echo "1@2@3@@5" | awk -F "@" '{print $5}'
5
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1465 次 |
| 最近记录: |