我正在进入linux并优化我的工作流程,并希望得到一个例子。我在嵌套文件夹中有一大堆.scss,我需要检查第一行是否为空,如果是,则删除它,然后重新保存文件。我在工作时在窗户上工作,但就像写bash一样。我已经尝试过:
grep -r "/^\n/"
但似乎回归每一条空白。然后,我不太确定如何删除它,然后重新保存。
答案 0 :(得分:1)
这可能会让你开始:
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选择文件的第一行并在其中应用大括号中的命令。
/^$/
是正则表达式。如果该行为空,它匹配一行。
d
告诉sed删除任何匹配的行。
所以,让我们把它们放在一起:如果文件的第一行是空的,那么sed会删除它。
您可以在find
和sed
上找到网络上的许多教程。您可以使用man find
或man sed
找到详细信息。
答案 1 :(得分:0)
您没有使用grep
来编辑文件,您应该使用sed
。