gpt4 book ai didi

linux - 第一次匹配而不是最后一次删除第 N 列中特定数字之前的所有字符

转载 作者:行者123 更新时间:2023-12-04 07:27:52 27 4
gpt4 key购买 nike

我正在尝试从数据集中的第 5 列中删除随机字符块。
样本数据:

A | 12 | AA | 24 | Test to go and keep 192.168.1.1 > 192.168.2.1 | B
结果应如下所示:
A | 12 | AA | 24 | 192.168.1.1 > 192.168.2.1 | B
到目前为止我有这个:
awk 'BEGIN{FS=OFS="|"} {gsub(".*? 192","", $5 )} 1' file.txt
但是,这会在最后一场比赛之前删除第 5 列中的所有内容。
代码现在做什么:
.168.2.11
我需要在第一场比赛而不是最后一场比赛之前删除所有内容

最佳答案

使用您展示的 sample ,请尝试关注 awk代码。简单的解释是:将字段分隔符和输出字段分隔符设置为 |对于 Input_file 的所有行。然后在第 5 个字段中用 NULL 全局替换空格和字母。根据显示的示例在第 5 个字段之前和之后添加空格,最后打印已编辑/未编辑的当前行。

awk 'BEGIN{FS=OFS="|"} {gsub(/[[:alpha:]]+|[[:space:]]+/,"",$5);$5=" "$5" "} 1' Input_file

编辑:如果您想在第 5 个字段中始终匹配 IP 地址 > IP 地址形式,那么只需尝试以下操作。
awk 'BEGIN{FS=OFS="|"} match($0,/([0-9]+\.){3}[0-9]+ > ([0-9]+\.){3}[0-9]+/){$5=substr($0,RSTART,RLENGTH)} 1' Input_file

关于linux - 第一次匹配而不是最后一次删除第 N 列中特定数字之前的所有字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/68126727/

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