我正在使用zone.tab
下的/usr/share/zoneinfo/zonetab
,我无法以特定格式显示数据。
我跑的命令:
cat zone.tab | awk '!/#/ {print $3}' | sort
这会返回一个区域和条目列表:
America/Washington
Pacific/Enderbury
我需要的是上面的内容在每一行的最后/
之后返回所有内容。
在某些情况下,例如Pacific/Somewhere/A
。我有一个正则表达式([^/]+$
)应该可以工作,但事实并非如此。有什么想法吗?
答案 0 :(得分:5)
您也可以在一个awk
命令中完成所有操作:
awk '!/^#/ { sub(".*/", "", $3); print $3 }' /usr/share/zoneinfo/zone.tab
---- ----------------- --------
| | |
for non-comment lines | |
| |
modify 3rd col |
leaving only text |
after last slash |
|
Then print modified 3rd col
答案 1 :(得分:1)
将输出传输到sed -e 's;^.*/;;'
。例如,
echo -e "America/Washington\nPacific/Enderbury" | sed 's;^.*/;;'
答案 2 :(得分:1)
sed s:.*/:: /usr/share/zoneinfo/zone.tab
答案 3 :(得分:1)
awk '!/^#/ { print $3;} ' < /usr/share/zoneinfo/zone.tab | awk -F/ ' { print $NF; }'
答案 4 :(得分:1)
这个正则表达式可能有效:
# echo -e "a\n\a/b\na/b/c\na/b/c/d\n" |sed 's#^\(\([^/]*/\)*\)\(.*\)#\3#'
a
b
c
d
或许删除反斜杠的sed -r 's#^(([^/]*/)*)(.*)#\3#'
更清楚。