awk 中使用字符串作为分隔符分割字符串
系统: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 }'
System : Solaris
I am trying to split a string using the delimiter as another string
For example:
The main string is : /as/asdasd/asdasd/root/asdqwe/asd/asssdd/
I wanna split this into two part from the "root" substring such that
$1 = /as/asdasd/asdasd/
and
$2 = asdqwe/asd/asssdd/
This is the code I implemented using FS, but it doesn't work:
echo /as/asdasd/asdasd/root/asdqwe/asd/asssdd/ | awk '
BEGIN { FS = "root" } { print $2 }'
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
无需使用
awk
,您可以使用 POSIX shell 执行此操作,如下所示:更新
如果您的 Solaris 版本的
awk
无法工作(可能是因为 FS 必须是字符而不是字符串),然后使用split()
尝试此方法No need to use
awk
, you can do this with your POSIX shell like so:Update
If your Solaris version of
awk
isn't working (probably because FS must be chars not strings), then try this method usingsplit()
除了前面您不处理的额外
/
之外,它在这里可以工作。也许您想要"root/"
作为分隔符?可能还需要使用更新的awk
; Solaris 仍然将古老的 V7 Unixawk
作为/usr/bin/awk
提供,符合 POSIX 的awk
为/usr/bin/诺克。
It works here, aside from the extra
/
on the front which you don't handle. Maybe you want"root/"
as your delimiter? It may also be necessary to use a newerawk
; Solaris still ships the ancient V7 Unixawk
as/usr/bin/awk
, POSIX-compliantawk
is/usr/bin/nawk
.