我在文件中有以下行。请注意我有意在第二行保留了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
第一行是管道,因为如果第一行有额外的#。 任何人都可以帮忙吗
答案 0 :(得分:1)
目前分隔符集的含义是:match # or #
。在这种情况下,管道|
字符充当OR
语句;而是尝试使用:
awk -F '#[|]#' ...
将|
放入字符类[ ... ]
awk
将与字面匹配。
答案 1 :(得分:0)
如果您希望在内容中提取Dept,这里有一个很好的选择,您可以选择,
awk -F'#' 'NR>1{print $NF}' test.txt
输出:
Science
Commerce