gpt4 book ai didi

linux - sed 包括前面的 null

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

我拥有的是客户预约的 csv。我正在做的是将它们从一个 SQL 文件中转储出来,然后将其转换为另一个程序可以使用的东西……特别是一个日历应用程序,尽管现在已经离题了。客户通过编号识别;不是名字。

854,2018-08-19 08:30:00
2538546,2018-08-21 13:00:00

没问题,我想用名字替换数字,所以我按数字提取名字,然后运行 ​​sed 命令,就像这样...

sed -i -e "s/$custnum/$fullName/g" ~/Appointments/Appts.csv

但这会产生一个问题,因为它将上面的 csv 变成了

John Doe,2018-08-19 08:30:00  #This is right
253John Doe6,2018-08-21 13:00:00 #This is totally not right

我想我需要它来搜索/替换不只是 $custnum,而且特别是 $custnum,它不受任何限制(空字符?)和逗号,所以它不会替换匹配的字符数的中间。我只是不知道该怎么做。

最佳答案

$ cat ip.txt
854,2018-08-19 08:30:00
2538546,2018-08-21 13:00:00

$ custnum=854
$ fullName='John Doe'
$ sed "s/^$custnum,/$fullName,/g" ip.txt
John Doe,2018-08-19 08:30:00
2538546,2018-08-21 13:00:00
  • ^ 是一个元字符,用于将搜索锚定到行的开头
  • , custnum 之后会确保部分号码不匹配
  • 在替换部分,在名称后面添加,
  • 作为一种好的做法,只对替换部分加双引号,对命令的其余部分使用单引号:sed 's/^'"$custnum"',/'"$fullName"',/g'

进一步阅读:GNU sed manual - Regular Expressions

关于linux - sed 包括前面的 null,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51710461/

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