regex - 在文件开头插入一个新行

标签 regex bash command-line-interface

<分区>

是否有任何方法可以找到所有文件,如 *.js 并在文件开头插入一些特定的行?寻找类似的东西:

找到 . -name '*.js' -exec sh -c '[插入这个'字符串'] "${0%.js}"' {}\;

最佳答案

这是一种在文件开头添加一行的方法:

sed -i '1s/^/line_to_be_added\n/' file

然后,您可以将上面的代码与 find 结合使用来实现您的最终目标:

find . -type f -name '*.js' -exec sed -i '1s/^/line_to_be_added\n/' {} \;

注意:这个答案已经过测试并适用于 GNU sed

编辑:上面的代码无法在空的.js 文件上正常运行,因为上面的sed 命令不起作用正如空文件所预期的那样。解决方法是测试文件是否为空,如果是,则通过 echo 添加所需的行,否则通过 sed 添加所需的行。这一切都可以在(长)一行中完成,如下所示:

find . -type f -name '*.js' -exec bash -c 'if [ ! -s "{}" ]; then echo "line_to_be_added" >> {}; else sed -i "1s/^/line_to_be_added\n/" {}; fi' \;

编辑 2:正如用户 Sarkis Arutiunian 指出的那样,我们需要在表达式前添加 '' 并在 前添加 \'$' code>\n 以使其在 MacOS sed 中正常工作。举个例子

sed -i '' '1s/^/line_to_be_added\'$'\n/' filename.js

编辑 3:这也有效,编辑器将知道如何语法高亮它:

sed -i '' $'1s/^/line_to_be_added\\\n/' filename.js

关于regex - 在文件开头插入一个新行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43969732/

相关文章:

regex - 如何使用 sed 只输出捕获的组?

linux - 有没有办法通过 LDAP 命令行执行系统命令?

python - Mac OSX : Switch to Python 2. 7.3

java - 如何在Java Formatter中转义减号?

java - 正则表达式匹配 "four characters, followed by an unknown No of digits."

php - 正则表达式 : remove <img which src attribute is empty

java - 在 bash 脚本中通过 ssh 运行许多 java 应用程序

Linux 打印状态检查脚本

Bash - 根据列在行中添加值

javascript - 搜索验证正则表达式在 JavaScript 中不起作用