tom*_*h13 6 unix shell awk substring
系统:Solaris我试图使用分隔符作为另一个字符串来拆分字符串
例如:
主要字符串是: /as/asdasd/asdasd/root/asdqwe/asd/asssdd/
我想把它分成两部分,从"根"子串这样
$1 = /as/asdasd/asdasd/
和
$2 = asdqwe/asd/asssdd/
这是我使用FS实现的代码,但它不起作用:
echo /as/asdasd/asdasd/root/asdqwe/asd/asssdd/ | awk '
BEGIN { FS = "root" } { print $2 }'
Run Code Online (Sandbox Code Playgroud)
无需使用awk,您可以使用 POSIX shell 执行此操作,如下所示:
$ var="/as/asdasd/asdasd/root/asdqwe/asd/asssdd/"
$ echo ${var%/root/*}
/as/asdasd/asdasd
$ echo ${var#*/root/}
asdqwe/asd/asssdd/
Run Code Online (Sandbox Code Playgroud)
如果您的 Solaris 版本awk不起作用(可能是因为 FS 必须是字符而不是字符串),请尝试使用此方法split()
awk '{split($0,a,"/root/");$1=a[1] "/"; $2=a[2]; print $1,$2}'
Run Code Online (Sandbox Code Playgroud)
除了/前面你无法处理的额外部分之外,它在这里可以工作。也许你想"root/"作为你的分隔符?可能还需要使用更新的awk;Solaris 仍然提供古老的 V7 Unix ,POSIX 兼容的awk是。/usr/bin/awkawk/usr/bin/nawk