Unix Shell脚本-AWK分隔符问题

Unix Shell脚本-AWK分隔符问题,awk,Awk,我在一个文件中有以下几行。请注意,我在第2行故意将额外的哈希值保持在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" >&

我在一个文件中有以下几行。请注意,我在第2行故意将额外的哈希值保持在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
第一行是管道,因为如果第一行中有多余的。
有人能帮上忙吗当前分隔符集的含义是:匹配或。在本例中,管道字符充当OR语句;相反,请尝试使用:

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

将|放入字符类[…]awk将字面上与之匹配。

如果您希望在内容中提取Dept,下面是一个不错的选择

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

Science  
Commerce

也许可以试试awk-F[|]…可能的awk-F'\\\|'的副本也会起作用。@karakfa:我得到的结果与使用该选项的OP相同,但使用\\\\|似乎有效。。。awk-版本20070501是的,它可能是特定于awk的。mawk可以加一个反斜杠。
Science  
Commerce