【发布时间】:2019-02-13 00:14:32
【问题描述】:
我有很多名字的文件:我只想替换第一个
sed -i "s/\(name:\).*/\1 ${NEW_VALUE}/" ./myFile
Input
- martin:
name: Martin D'vloper
job: Developer
skills:
- python
- perl
- pascal
- tabitha:
name: Tabitha Bitumen
job: Developer
skills:
- lisp
- fortran
- erlang
输出仅更改名字 Martin D'vloper
- martin:
name: NEW VALUE!!!
job: Developer
skills:
- python
- perl
- pascal
- tabitha:
name: Tabitha Bitumen
job: Developer
skills:
- lisp
- fortran
- erlang
它改变了所有的名字
我看到了一些语法不同的东西
sed '0,/pattern/s/pattern/replacement/' filename
但我无法将 sed 更改为此,因为动态值 你能告诉我如何用我的语法只替换第一个吗?
【问题讨论】:
-
如果您能提供输入和预期输出的样本,我们的生活会更轻松,请将它们添加到您的帖子中并让我们知道吗?
-
更新了输入输出
-
我删除了我的答案(
sed -z "s/name:[^\n]*/name: $NEW_VALUE/"),因为这个问题确实是重复的。现在可以找到我的答案here。 -
如果总是第 2 行:
sed -r '2s/(name:).*/\1 NEW VALUE!!!/' file