awk 中使用字符串作为分隔符分割字符串

发布于 2024-10-22 12:15:31 字数 412 浏览 2 评论 0原文

系统: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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

朮生 2024-10-29 12:15:31

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

No need to use awk , you can do this with your POSIX shell like so:

$ var="/as/asdasd/asdasd/root/asdqwe/asd/asssdd/"

$ echo ${var%/root/*}
/as/asdasd/asdasd

$ echo ${var#*/root/}
asdqwe/asd/asssdd/

Update

If your Solaris version of awk isn't working (probably because FS must be chars not strings), then try this method using split()

awk '{split($0,a,"/root/");$1=a[1] "/"; $2=a[2]; print $1,$2}'
意中人 2024-10-29 12:15:31

除了前面您不处理的额外 / 之外,它在这里可以工作。也许您想要 "root/" 作为分隔符?可能还需要使用更新的 awk; Solaris 仍然将古老的 V7 Unix awk 作为 /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 newer awk; Solaris still ships the ancient V7 Unix awk as /usr/bin/awk, POSIX-compliant awk is /usr/bin/nawk.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文