Unix Shell脚本 - AWK定界符问题



我在文件中有以下行。请注意,我在第二行中有意将额外的哈希保持在2到0之间。文件名:test.txt

Name#|#Age#|#Dept  
AC#|#2#0#|#Science  
BC#|#22#|#Commerce

我正在使用AWK在Dept列中获取数据

awk -F "#|#" -v c="Dept" 'NR==1{for (i=1; i<=NF; i++) if ($i==c){p=i; break}; next} {print $p}' "test.txt" >> result.txt

结果.txt向我展示以下

|  
Commerce

第一行是管道,因为如果第一行中的额外#。任何人都可以在此方面提供帮助

当前定界符集的含义是: match # or #。在这种情况下,管道|字符充当OR语句;而是尝试使用:

awk -F '#[|]#' ...

|放入字符类[ ... ] awk将其字面上的匹配。

如果您想在内容中提取部门,这是您可以选择的好选择,

 awk -F'#' 'NR>1{print $NF}' test.txt

输出:

Science  
Commerce

最新更新