linux - SED 命令替换

标签 linux bash sed csh

<分区>

假设我有一个带有警告的文件。新行中的每个警告的 ID 包含3 个大写字母后跟仅 3 个数字,应由其 ID 替换。

例子:

SIM_WARNING[ANA397]: Node q<159> for vector output signal does not exist

输出应为 ANA397,其余行已删除。

如何使用 sed 做到这一点?

最佳答案

我认为您不需要为此使用 sed。带有 --only-matching 的简单 grep 可以做到,如:

grep -E 'SIM_WARNING\[(.)\]' --only-matching 

应该适合你。

地点:

  • -E 做“增强的正则表达式。我认为我们需要那些用 ( ) 捕获
  • 然后遵循由固定的 SIM_WARNING 和方括号内的匹配组成的模式
  • --only-matching 只是让grep打印只匹配内容

换句话说:通过使用 ( match ) 你告诉 grep 你只关心那个匹配模式中的东西。

关于linux - SED 命令替换,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52201604/

相关文章:

linux - 替换 sed 命令文本内联

linux - 通过 bash 脚本的 Gnuplot

linux - Capistrano 部署的心理错误

linux - ffmpeg 修复水印大小或百分比

c - valgrind 错误和 ucontext。为什么是 "Use of uninitialised value of size 8"?

linux - 系统 Shell 脚本无法在 PATH 中找到我的命令

php - 通过 Bash 的 Mysql View 转储

linux - 等待第二个脚本触发直到第二个脚本的所有后台并行进程完成?

bash - 如何在 linux 中为 sed 命令设置临时文件目录?

sed - 从 mysqldump 中按表名获取 INSERT 的行数 - awk、sed、grep