系统:Solaris 我试图使用分隔符作为另一个字符串
来分割字符串例如:
主要字符串是:/as/asdasd/asdasd/root/asdqwe/asd/asssdd/
我想把它分成两部分来自“root”子串,以便
$1 = /as/asdasd/asdasd/
和
$2 = asdqwe/asd/asssdd/
这是我使用FS实现的代码,但它不起作用:
echo /as/asdasd/asdasd/root/asdqwe/asd/asssdd/ | awk '
BEGIN { FS = "root" } { print $2 }'
答案 0 :(得分:4)
它可以在这里工作,除了前面你没有处理的额外/
。也许你想要"root/"
作为你的分隔符?可能还需要使用较新的awk
; Solaris仍将古老的V7 Unix awk
发布为/usr/bin/awk
,符合POSIX的awk
为/usr/bin/nawk
。
答案 1 :(得分:4)
无需使用awk
,您可以像这样使用POSIX shell执行此操作:
$ var="/as/asdasd/asdasd/root/asdqwe/asd/asssdd/"
$ echo ${var%/root/*}
/as/asdasd/asdasd
$ echo ${var#*/root/}
asdqwe/asd/asssdd/
如果您的Solaris awk
版本无效(可能是因为FS必须是字符而不是字符串),请使用split()
awk '{split($0,a,"/root/");$1=a[1] "/"; $2=a[2]; print $1,$2}'