Awk 命令查找并替换字符串并打印关键字后的所有内容

Awk 命令查找并替换字符串并打印关键字后的所有内容

Linux 命令新手。我该使用什么语法来查找和替换每行以“数据中心:”开头但每行不同的地址信息”但以单词 Site:结尾的字符串,并且我需要保留后面的站点详细信息。

例子:

Input.txt
Data Centre: 23 Mulberry lane, Washington Site: 9067 Green

Expected Output
Site: 9067 Green

我找到了 gsub 示例,但是我的操作系统上无法使用 gsub。

任何帮助均感激不尽。

苹果

答案1

如果你使用分号作为字段分隔符,那么你想要的内容将位于最后一个字段中

awk -F ':'  '/Site:/ { print "Site: ", $NF }'

答案2

以下是sed使用扩展正则表达式-r和捕获组()->的解决方案\1

sed -r 's/^Data Centre:.*(Site: .*)$/\1/' Input.txt

如果您想要抑制文件中可能出现的任何其他行的输出:

sed -n -r 's/^Data Centre:.*(Site: .*)$/\1/p' Input.txt

-i.bak添加同时进行更改和备份文件的选项,或将输出重定向到新文件。

相关内容