如何使用 grep 扫描 .scss 文件的文件夹并删除第一行(如果它是空白的)?
How do I use grep to scan a folder of .scss files and remove the first line if it is blank?
我正在进入 linux 并优化我的工作流程,希望能举个例子。我在嵌套文件夹中有一大堆 .scss,我需要检查第一行是否为空,如果是,则删除它,然后重新保存文件。我在工作windows,但喜欢写作bash。我已经尝试过 :
grep -r "/^\n/"
但似乎return 每一行都是空白。然后我不太确定如何删除它然后重新保存。
您不使用grep
编辑文件,您应该使用sed
。
这可能会让您入门:
find . -name '*.scss' -exec sed -i.bak '1{/^$/d}' {} \;
为了理解这个命令,我们可以把它分成两部分:
find . -name '*.scss' -exec ... \;
从当前目录开始,递归查找名称以 .scss
结尾的文件,当找到一个文件时,它会在其上运行 -exec
后面的命令。
sed -i.bak '1{/^$/d}' {}
sed
是一个流编辑器。选项 -i.bak
告诉它就地更改文件,留下备份文件。在 find
运行此命令之前,它会将 {}
替换为它找到的文件的实际名称。
1{...}'
告诉 sed select 文件的第一行并将大括号中的命令应用于它。
/^$/
是正则表达式。如果该行为空,则匹配该行。
d
告诉 sed 删除任何匹配的行。
所以,让我们把它们放在一起:如果文件的第一行是空的,sed 会删除它。
您会在 find
和 sed
上找到许多网上教程。您可以找到有关使用 man find
或 man sed
.
的详细信息
我正在进入 linux 并优化我的工作流程,希望能举个例子。我在嵌套文件夹中有一大堆 .scss,我需要检查第一行是否为空,如果是,则删除它,然后重新保存文件。我在工作windows,但喜欢写作bash。我已经尝试过 :
grep -r "/^\n/"
但似乎return 每一行都是空白。然后我不太确定如何删除它然后重新保存。
您不使用grep
编辑文件,您应该使用sed
。
这可能会让您入门:
find . -name '*.scss' -exec sed -i.bak '1{/^$/d}' {} \;
为了理解这个命令,我们可以把它分成两部分:
find . -name '*.scss' -exec ... \;
从当前目录开始,递归查找名称以
.scss
结尾的文件,当找到一个文件时,它会在其上运行-exec
后面的命令。sed -i.bak '1{/^$/d}' {}
sed
是一个流编辑器。选项-i.bak
告诉它就地更改文件,留下备份文件。在find
运行此命令之前,它会将{}
替换为它找到的文件的实际名称。1{...}'
告诉 sed select 文件的第一行并将大括号中的命令应用于它。/^$/
是正则表达式。如果该行为空,则匹配该行。d
告诉 sed 删除任何匹配的行。所以,让我们把它们放在一起:如果文件的第一行是空的,sed 会删除它。
您会在 find
和 sed
上找到许多网上教程。您可以找到有关使用 man find
或 man sed
.