如何使用grep扫描.scss文件的文件夹,如果它是空白则删除第一行?

时间:2016-09-22 16:26:37

标签: bash grep workflow

我正在进入linux并优化我的工作流程,并希望得到一个例子。我在嵌套文件夹中有一大堆.scss,我需要检查第一行是否为空,如果是,则删除它,然后重新保存文件。我在工作时在窗户上工作,但就像写bash一样。我已经尝试过:

grep -r "/^\n/"

但似乎回归每一条空白。然后,我不太确定如何删除它,然后重新保存。

2 个答案:

答案 0 :(得分:1)

这可能会让你开始:

find . -name '*.scss' -exec sed -i.bak '1{/^$/d}' {} \;

要理解此命令,我们可以将其分为两部分:

  1. find . -name '*.scss' -exec ... \;

    从当前目录开始,对于名称以.scss结尾的文件,它会递归显示,当它找到一个时,它会在其上运行-exec之后的命令。

  2. sed -i.bak '1{/^$/d}' {}

    sed是一个流编辑器。选项-i.bak告诉它在原地更改文件,留下备份文件。在find运行此命令之前,它会将{}替换为它找到的文件的实际名称。

    1{...}'告诉sed选择文件的第一行并在其中应用大括号中的命令。

    /^$/是正则表达式。如果该行为空,它匹配一行。

    d告诉sed删除任何匹配的行。

    所以,让我们把它们放在一起:如果文件的第一行是空的,那么sed会删除它。

  3. 您可以在findsed上找到网络上的许多教程。您可以使用man findman sed找到详细信息。

答案 1 :(得分:0)

您没有使用grep来编辑文件,您应该使用sed

https://www.gnu.org/software/sed/manual/sed.html