gpt4 book ai didi

bash - awk - 仅按第一次出现拆分

转载 作者:行者123 更新时间:2023-11-29 08:48:12 24 4
gpt4 key购买 nike

我有这样一行:

one:two:three:four:five:six seven:eight

我想使用 awk$1 设为 1,将 $2 设为 two:three:four:five :六七:八

我知道我可以通过 sed 得到它。即使用 sed 更改第一次出现的 :,然后使用新的分隔符更改 awk

但是用新的分隔符替换对我没有帮助,因为我不能保证新的分隔符不会已经在文本中的某个地方。

我想知道是否有一个选项可以让 awk 以这种方式运行

所以像这样:

awk -F: '{print $1,$2}'

将打印:

one two:three:four:five:six seven:eight

我还想对 $1$2 进行一些操作,所以我不想只替换第一次出现的 : .

最佳答案

没有任何替换

echo "one:two:three:four:five" | awk -F: '{ st = index($0,":");print $1 "  " substr($0,st+1)}'

index 命令在整个字符串中找到“:”的第一次出现,因此在这种情况下,变量 st 将设置为 4。然后我使用 substr 函数从 position 开始获取字符串的所有其余部分st+1,如果没有提供结束编号,它将转到字符串的末尾。输出为

one  two:three:four:five

如果您想做进一步处理,您总是可以将字符串设置为变量以进行进一步处理。

rem = substr($0,st+1)

请注意,这是在 Solaris AWK 上测试过的,但我看不出有任何理由说明它不适用于其他版本。

关于bash - awk - 仅按第一次出现拆分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19154996/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com