ITPub博客

首页 > Linux操作系统 > Linux操作系统 > [20210318]awk分割符FS.txt

[20210318]awk分割符FS.txt

原创 Linux操作系统 作者:lfree 时间:2021-03-18 10:51:19 1 删除 编辑

[20210318]awk分割符FS.txt

--//awk是我最不熟悉的命令,不过工作中需要,测试分割符号FS。

$ echo "1#2-3"
1#2-3

--//如果将#,-作为分割符号如何写呢?

$ echo "1#2-3" | awk -v FS="#-" '{print $1,$2,$3}'
1#2-3

$ echo "1#2-3" | awk -v FS="#" '{print $1,$2,$3}'
1 2-3

$ echo "1#2-3" | awk -v FS="[#-]" '{print $1,$2,$3}'
1 2 3

$ echo "1##2-3" | awk -v FS="[#-]+" '{print $1,$2,$3}'
1 2 3

$ echo "1-#2-3" | awk -v FS="[#-]+" '{print $1,$2,$3}'
1 2 3

--//但是如果分隔符号正好是[]呢?

$ echo map dba 4,151 | rlbbed | grep "sb2 kdbr"
 sb2 kdbr[14]                               @118

--//我仅仅需要输出kdbr[14]里面的数字14,如何实现呢?

$ echo map dba 4,151 | rlbbed | grep "sb2 kdbr" |  awk -v  FS='[[]' '{print $2}'
14]                               @118

$ echo map dba 4,151 | rlbbed | grep "sb2 kdbr" |  awk -v  FS='[[]]' '{print $2}'

--//竟然输出为空。

$ echo map dba 4,151 | rlbbed | grep "sb2 kdbr" |  awk -v  FS='[]]' '{print $1}'
 sb2 kdbr[14
--//很显然分开写[ 或者]都是有效的。
--//改写如下先写] 再写[ 就ok了。
$ echo map dba 4,151 | rlbbed | grep "sb2 kdbr" |  awk -v  FS='[][]' '{print $2}'
14

--//原来写成FS='[[]]'相当于没有任何分割符。
--//不过最后我还是使用sed来实现。
$ echo map dba 4,151 | rlbbed | grep "sb2 kdbr" | sed -e "s/^.*\[//;s/].*$//"
14

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/267265/viewspace-2763493/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论
熟悉oracle相关技术,擅长sql优化,rman备份与恢复,熟悉linux shell编程。

注册时间:2008-01-03

  • 博文量
    4014
  • 访问量
    7991057