我需要删除结构如下的多个降价文件的前三行:
|- Folder
| - 01-07-22.md
| - 02-07-22.md
| - 03-07-22.md
| - ...
我想用Mac终端做这件事(如果可能的话),因为我没有任何编码语言的专业知识,因此我的计算机上没有安装任何编码平台。
我还想知道,除了删除前3行,是否可以添加"##"在每个文件的开头。
哪些是有效的方式:
- 这项工作:
sed -i '' '1,3d' Folder/*.md
- 下面的命令也可以工作:
但是它不会在第一行之前添加新行。sed -i '' '1i ##' *.md
- 这根本不起作用:
sed -i '' '1s /^/##/' *.md
如何在开始处添加空行和"##"现在开始的第二行?解释:从这个:
# First line of example .md file
Second line of example .md
...
:
### First line of example .md file
Second line of example .md
...
您应该能够使用(GNU)sed
。我希望Mac版本支持所有必需的标志和功能。
删除前3行:
sed -i '1,3d' Folder/*.md
在每个文件前加上##
行:
sed -i '1i##' Folder/*.md
在现有的第一行前加上##
:
sed -i '1s/^/##/' Folder/*.md
原始文件将被覆盖,不需要确认,但您可以指定-i.bak
创建备份文件,例如Folder/01-07-22.md.bak
。
-i ''
禁止创建备份文件。某些sed
实现可能总是在-i
之后需要参数,所以使用-i.bak
或-i .bak
。
如果在行前加前缀不起作用,请尝试不同的语法(换行符很重要):
sed -i .bak '1i
##' Folder/*.md
如果这也不起作用,还有另一种形式可以调用sed:
sed -i .bak -e '1i' -e '##' Folder/*.md
如果你想修改第一行和在它之前添加一个空行,例如转换
1
2
3
到
##1
2
3
将要求您使用以下命令:
sed -i .bak '1s/^/##/;1i
' Folder/*.md