使用 bash 将文本添加到文件中的文本
Add text to text in file with bash
我不是 bash 专家,所以我请求帮助来操作文件中的字符串。我知道 sed
但我很难尝试。
基本上我有一个包含以下内容的文件:
docs: lala
docs: this is the description
That is the footer
我只需要在 第一行添加 docs: lala
以下文本: ($SCOPE)
最后应该是这样的:
docs(some_scope_name): lala
docs: this is the description
That is the footer
我有的是这个:
sed -i $FILE -e "s/docs:/docs:($SCOPE_NAME)/"
这很好用,但是也替换了第二个文档。我只需要第一场!
不仅文档应该匹配,其他类型也应该匹配,它们是:
build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test
例如也可以是:
feat(some_scope_name): lala
feat: this is the description
That is the footer
我应该如何改进我的 sed 以实现该目标?
编辑
@anubhava 的建议回答
sed -E "0,/^[[:blank:]]*(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test):/ s//(lala):/" $FILE
工作正常,但它仍在替换第二个匹配项:
docs(lala): lala
docs(lala): this is the description
That is the footer
您可以使用此 gnu-sed
命令:
sed -i -E "1s/^[[:blank:]]*(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test):/($SCOPE_NAME):/" file
使用sed
$ scope=some_scope_name
$ sed "1s/\([^:]*\)\(.*\)/($scope)/" input_file
docs(some_scope_name): lala
docs: this is the description
That is the footer
我不是 bash 专家,所以我请求帮助来操作文件中的字符串。我知道 sed
但我很难尝试。
基本上我有一个包含以下内容的文件:
docs: lala
docs: this is the description
That is the footer
我只需要在 第一行添加 docs: lala
以下文本: ($SCOPE)
最后应该是这样的:
docs(some_scope_name): lala
docs: this is the description
That is the footer
我有的是这个:
sed -i $FILE -e "s/docs:/docs:($SCOPE_NAME)/"
这很好用,但是也替换了第二个文档。我只需要第一场!
不仅文档应该匹配,其他类型也应该匹配,它们是:
build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test
例如也可以是:
feat(some_scope_name): lala
feat: this is the description
That is the footer
我应该如何改进我的 sed 以实现该目标?
编辑
@anubhava 的建议回答
sed -E "0,/^[[:blank:]]*(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test):/ s//(lala):/" $FILE
工作正常,但它仍在替换第二个匹配项:
docs(lala): lala
docs(lala): this is the description
That is the footer
您可以使用此 gnu-sed
命令:
sed -i -E "1s/^[[:blank:]]*(build|chore|ci|docs|feat|fix|perf|refactor|revert|style|test):/($SCOPE_NAME):/" file
使用sed
$ scope=some_scope_name
$ sed "1s/\([^:]*\)\(.*\)/($scope)/" input_file
docs(some_scope_name): lala
docs: this is the description
That is the footer