gpt4 book ai didi

linux - 如何用 X 到 Y 字符替换字符串

转载 作者:太空宇宙 更新时间:2023-11-04 04:36:57 26 4
gpt4 key购买 nike

我有类似于以下的数据:

2496,8805,1/7/19 18:58,9723308800
7,18538320322,1/7/19 19:22,13012881250
8827,9723308808,1/7/19 19:55,9723308800
3109,8801,1/7/19 19:56,19723308800

我正在寻找一种方法来替换字段 2 中的字符串。如果数字没有 10-11 个字符,我想将其替换为 12223334444,因此输出将是:

2496,12223334444,1/7/19 18:58,9723308800
7,18538320322,1/7/19 19:22,13012881250
8827,9723308808,1/7/19 19:55,9723308800
3109,12223334444,1/7/19 19:56,19723308800

我最初的想法是使用 cut 获取第二个字段,然后使用 grep "[1-9]" 或类似的内容来匹配 9 个或更少的字符。不过,我很确定有一种更有效的方法可以使用 sed 或 awk 来完成此操作。任何指导将不胜感激。

最佳答案

awk 'BEGIN{FS=OFS=","} $2<1000000000 || $2>99999999999 {$2=12223334444} {print}' file

或更短:

awk 'BEGIN{FS=OFS=","} $2<1000000000 || $2>99999999999 {$2=12223334444}1' file

awk 'BEGIN{FS=OFS=","} length($2)<10 || length($2)>11 {$2=12223334444}1' file

awk 'BEGIN{FS=OFS=","} {l=length($2)} l<10 || l>11 {$2=12223334444}1' file

awk -F, -v OFS=, '{l=length($2)} l<10 || l>11 {$2=12223334444}1' file

输出:

2496 12223334444 1/7/19 18:58 97233088007,18538320322,1/7/19 19:22,130128812508827,9723308808,1/7/19 19:55,97233088003109 12223334444 1/7/19 19:56 19723308800
<小时/>

参见:8 Powerful Awk Built-in Variables – FS, OFS, RS, ORS, NR, NF, FILENAME, FNR

关于linux - 如何用 X 到 Y 字符替换字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54846630/

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