我有文本:
cat README.md | grep "####.*"
#### Creating a helm chart with 2 child helm chart helm v3
#### Check you helmchart repositories
#### List content of your main-helmchart
#### Helm v3 dependency update
#### Check the content of charts/ folder in main-helmchart/
#### Check what is going to be installed
我正在尝试使其看起来像这样:
- [Creating a helm chart with 2 child helm chart helm v3](#creating-a-helm-chart-with-2-child-helm-chart-helm-v3)
- [Check you helmchart repositories](#check-you-helmchart-repositories)
- [List content of your main-helmchart](#list-content-of-your-main-helmchart)
- [Helm v3 dependency update](#helm-v3-dependency-update)
- [Check the content of charts/ folder in main-helmchart/](#check-the-content-of-charts/-folder-in-main-helmchart/)
- [Check what is going to be installed](#check-what-is-going-to-be-installed)
有没有办法为此使用sed?
我正在尝试匹配所有内容 “#”符号并将空格替换为破折号“-”
cat README.md | sed -E -n 's/^([#]{4}\s)(.*)$/- [\2](#\L\2)/p' | sed -E '/#.*/ s/ /-/g'
--[Creating-a-helm-chart-with-2-child-helm-chart-helm-v3](#creating-a-helm-chart-with-2-child-helm-chart-helm-v3)
--[Check-you-helmchart-repositories](#check-you-helmchart-repositories)
--[List-content-of-your-main-helmchart](#list-content-of-your-main-helmchart)
--[Helm-v3-dependency-update](#helm-v3-dependency-update)
--[Check-the-content-of-charts/-folder-in-main-helmchart/](#check-the-content-of-charts/-folder-in-main-helmchart/)
--[Check-what-is-going-to-be-installed](#check-what-is-going-to-be-installed)
任何建议?
Thx
带有GNU sed
$ sed -E 's/^#+ (.*)/- [\1](#\L\1)/; :a s/(\(#[^ ]+) /\1-/g; ta' ip.txt
- [Creating a helm chart with 2 child helm chart helm v3](#creating-a-helm-chart-with-2-child-helm-chart-helm-v3)
- [Check you helmchart repositories](#check-you-helmchart-repositories)
- [List content of your main-helmchart](#list-content-of-your-main-helmchart)
- [Helm v3 dependency update](#helm-v3-dependency-update)
- [Check the content of charts/ folder in main-helmchart/](#check-the-content-of-charts/-folder-in-main-helmchart/)
- [Check what is going to be installed](#check-what-is-going-to-be-installed)
s/^#+ (.*)/- [\1](#\L\1)/
这与#### Heading
匹配并转换为- [Heading](#heading)
格式:a s/(\(#[^ ]+) /\1-/g; ta
这是一个替换(#
之后发现的所有空格的循环>请注意,您可以用cat+grep+sed+etc
将sed -nE '/^#### /{s/^#+ (.*)/- [\1](#\L\1)/; :a s/(\(#[^ ]+) /\1-/g; ta; p}' ip.txt
替换为单个命令
带有perl
$ perl -pe 's/#+ (.+)/"- [$1](#" . lc($1) =~ tr| |-|r. ")"/e' ip.txt - [Creating a helm chart with 2 child helm chart helm v3](#creating-a-helm-chart-with-2-child-helm-chart-helm-v3) - [Check you helmchart repositories](#check-you-helmchart-repositories) - [List content of your main-helmchart](#list-content-of-your-main-helmchart) - [Helm v3 dependency update](#helm-v3-dependency-update) - [Check the content of charts/ folder in main-helmchart/](#check-the-content-of-charts/-folder-in-main-helmchart/) - [Check what is going to be installed](#check-what-is-going-to-be-installed)
Perl允许在带有
e
标志的替换部分中使用Perl代码。因此,您可以一次替换完成所有操作。lc
用于小写转换,tr
用于用-
替换空格,依此类推。
对于过滤器+替换,请使用perl -ne 'print s/#+ (.+)/"- [$1](#" . lc($1) =~ tr| |-|r. ")"/re if /^#### /' ip.txt
这可能对您有用(GNU sed):