Sed 替换许多js文件中的字符串
我在一个目录和子目录下有许多文件(.js文件)。我想替换以“;”结尾的行,使用原始行加上Sed 替换许多js文件中的字符串,sed,Sed,我在一个目录和子目录下有许多文件(.js文件)。我想替换以“;”结尾的行,使用原始行加上print.f(“文件名”和行号”);。找到它的实际文件名和行号 示例-以“;”结尾的行 var x = 5; 应替换为 var x = 5;print.f("test.js with line number 16"); test.js和16是分别找到var x=5;的文件名和行号 编辑 test.js和16是示例,如果您灵活使用awk,则输出中应该是文件名和行号: awk '{printf $0} /.
print.f(“文件名”和行号”);
。找到它的实际文件名和行号
示例-以“;”结尾的行
var x = 5;
应替换为
var x = 5;print.f("test.js with line number 16");
test.js
和16
是分别找到var x=5;
的文件名和行号
编辑
test.js和16是示例,如果您灵活使用
awk
,则输出中应该是文件名和行号:
awk '{printf $0} /.*\;$/{printf " print.f(\"" FILENAME " with line number " NR "\");"} {printf "\n"}' filename
这将在每行以;
结尾时添加print.f
语句
除非您有GNU awk 4.1.0或更高版本,否则必须将命令的输出临时写入文件,然后将其移回
对于GNU awk 4.1.0及以上版本,您可以使用-i
选项进行就地文件编辑
gawk -i '{printf $0} /.*\;$/{printf " print.f(\"" FILENAME " with line number " NR "\");"} {printf "\n"}' filename
要查找所有
.js
文件并对其运行上述gawk
命令:
find . -type f -name "*.js" | xargs gawk -i '{printf $0} /.*\;$/{printf " print.f(\"" FILENAME " with line number " NR "\");"} {printf "\n"}'
你好,Jenish,谢谢。我尝试了awk命令,但当我在顶部给出目录名时,它返回了一个错误,说awk:read error(是一个目录)。它是否适用于目录,在目录下有子目录和文件。