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

时间:2011-03-17 00:52:26

标签: shell unix awk substring

系统: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 }'

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}'