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
添加同时进行更改和备份文件的选项,或将输出重定向到新文件。