Unix Shell脚本 - AWK定界符问题

时间:2017-06-06 22:28:35

标签: 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

result.txt显示以下内容

|  
Commerce

第一行是管道,因为如果第一行有额外的#。 任何人都可以帮忙吗

2 个答案:

答案 0 :(得分:1)

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

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

|放入字符类[ ... ] awk将与字面匹配。

答案 1 :(得分:0)

如果您希望在内容中提取Dept,这里有一个很好的选择,您可以选择,

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

输出:

Science  
Commerce