2017-06-06 90 views
0

我在文件中有以下行。请注意,我有意将第二行中的额外哈希值保持在2和0之间。 文件名:test.txt的Unix Shell脚本 - AWK分隔符问题

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

我使用awk来获得系列中的数据

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

也许尝试'的awk -F“#[|]# “'... –

+1

[管道符号|在AWK字段分隔符中](https://stackoverflow.com/questions/34801373/pipe-symbol-in-awk-field-delimiter) –

+0

'awk -F'#\ |#''也可以。 – karakfa

回答

0

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

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

|为角色类[ ... ]awk将逐字匹配。

0

如果你希望在你的内容提取部,这里是你可以选择一个不错的选择,

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

输出:

Science 
Commerce