linux - 如果只提供了名字,我将如何使用 sed 更改某人的生日?

标签 linux command-line sed

我要修改的行是大力水手的生日 我们必须假设我们不知道他的生日。

这就是我所做的,但它不起作用。

sed '/Popeye/s/[0-9]\/[0-9][0-9]\/[0-9][0-9]/[1][1]\/[1][4]\/[4][6]' DDdatebook

输入:

Popeye Sailor:156-454-3322:945 Bluto Street, Anywhere, USA 29358:3/19/35:22350

最佳答案

sed '/Popeye/ s#:[0-9]\{1,2\}/[0-9]\{1,2\}/\([0-9]\{2\}\)\{1,2\}:#:[1][1]/[1][4]/[4][6]:#' YourFile
  • 你忘记了最后一个分隔符
  • 我建议使用 / 之外的另一个,因为模式中存在,我在这种情况下选择 #,这样内部 / 就不必转义。
  • 我添加了一个广泛的数字模式,允许 1 或 2 位数字表示日/月,2 或 4 位数字表示年份(最后一个似乎只是 2,但以防万一或删除第二个选项)

关于linux - 如果只提供了名字,我将如何使用 sed 更改某人的生日?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28957265/

相关文章:

awk - 列的行太长错误

linux - 从unix中的倒数第二行删除一个字符

linux - curl: (56) 从对端接收数据时失败

c - mmap 总线错误写入超过 2Gb 的 MAP_SHARED 文件

c - 为什么 read() 返回不正确的字节数?

linux - 如何确定 systemd EnvironmentFile 将设置的精确环境变量集?

vim - 如何启动 vim 在 2 个选项卡中打开 4 个文件,每个选项卡有 2 个窗口

haskell - 尝试升级 Haskell 堆栈

linux - Sed 目录错误

regex - 如何优化英语单词列表