我正在尝试替换这个:
行开头的数字始终是 3 位数字,用 0 填充,但是前面可能有空行或常规句子,如我的包含 echo 的完整示例所示。
227| Mathematics | 9 | search,seo |
038| Top Games | 2391 | search,seo,cookies |
136| Top Programming Languages | 219 | cookies |
Run Code Online (Sandbox Code Playgroud)
和
227.001| Mathematics | 9 | search,seo |
038.002| Top Games | 2391 | search,seo,cookies |
136.003| Top Programming Languages | 219 | cookies |
Run Code Online (Sandbox Code Playgroud)
这是我到目前为止所拥有的(这有效,但数字不是 0 填充的):
227| Mathematics | 9 | search,seo |
038| Top Games | 2391 | search,seo,cookies |
136| Top Programming Languages | 219 | cookies |
Run Code Online (Sandbox Code Playgroud)
我想我需要添加类似 'printf("%03d\n", ++i)' 的内容,但是当我尝试用它替换 ++i 时,它不起作用。
一种解决方案(您有很多选择^^):
<INPUT> |
awk '
BEGIN{FS=OFS="|"}
/^[0-9]{3}/{$1=$1 sprintf(".%03d", NR)}
1
'
Run Code Online (Sandbox Code Playgroud)
输出:
Last Updated: Mar 15 2023
- Score: cumulative of benchmarking tools.
- KiB: total size of the page.
- Stats: metrics related to the page.
| Score | KiB | Stats |
| --- | --- | --- |
227.001| Mathematics | 9 | search,seo |
038.002| Top Games | 2391 | search,seo,cookies |
136.003| Top Programming Languages | 219 | cookies |
Run Code Online (Sandbox Code Playgroud)