sed - 将 pattern1 行存储在缓冲区中并使用它来替换 pattern2
问题描述
文件:
url: urlvalue
name:
organisation:
word
我如何提取 urlvalue 并将其添加到 name: 以便最终输出。
url: urlvalue
name: urlvalue
organisation:
word
正则表达式来查找模式并进行复制,但通过编辑模式的第一个单词,例如。在上面找到带有 ^url 的行,在该行下方添加同一行的副本,但将 url: 更改为 name:
还查询以下内容:如何在 awk 或 sed 中否定多个正则表达式?
例如。所有不以 name、organization 和 url 开头的行 --->apped pass: 作为这些行的前缀
试过:
awk '$1 != "url*" && $1 != "name*" && $1 != "organisation*" {$1 = "pass"} {print}'
也试过:
awk '$1 != "url*" && $1 != "name*" && $1 != "organisation*" {gsub(/^/, pass:, "g", $1) {print}'
不工作
另一个尝试过的解决方案部分工作
awk '$1 != "url:" && $1 != "name:" && $1 != "organisation:" {print "pass"$0}'
但它只输出
pass:word
期望的输出:
url: urlvalue
name: urlvalue
organisation:
pass:word
解决方案
假设name:
可以忽略任何url:
以url:
name:
$ sed -n '/^name:/!p; s/^url:/name:/p' file
url: urlvalue
name: urlvalue
organisation:
-n
禁用自动打印。p
rint 任何不以“name:”开头的行。然后将p
标志与s///
命令一起使用,打印以“url:”开头的行,并将其更改为以“name:”开头。
相同的想法awk
:
$ awk '!/^name:/; sub(/^url:/, "name:")' file
url: urlvalue
name: urlvalue
organisation:
推荐阅读
- php - 不同的背景线性渐变加上桌面上的背景图像 php 循环
- python - 你如何用 python/selenium 刮掉偶数元素?
- powershell - Powershell - 匹配一个或另一个
- text - 基于包含特定字符串的行替换列值
- qt - Qt5-QML:ColumnLayout 在嵌套循环中覆盖另一个 ColumnLayout
- unit-testing - 在这个代码示例中,不可测试是什么意思?
- ruby - Ruby on Rails:无法编辑 credentials.yml.enc
- javascript - 给定一个对象数组,计算定义了多少(可能不同)属性
- c# - Unity 3D 单向墙
- javascript - 在前端和后端使用 JS 的直观方式 (Node.JS)