在awk中使用字符串作为分隔符拆分字符串

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)

Sie*_*geX 5

无需使用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)


gee*_*aur 4

除了/前面你无法处理的额外部分之外,它在这里可以工作。也许你想"root/"作为你的分隔符?可能还需要使用更新的awk;Solaris 仍然提供古老的 V7 Unix ,POSIX 兼容的awk是。/usr/bin/awkawk/usr/bin/nawk