Javascript 如何更改特定文件中的一行代码?

Javascript 如何更改特定文件中的一行代码?,javascript,node.js,Javascript,Node.js,例如,我有多个node_模块,其中一个文件需要修改才能工作 /path/to/file.js中的示例: Import {something,somethingElse} from “something” 需要: Import {something} from “something” 我知道grep,sed,但我不知道哪种方法最适合于此。grep检查文件中的匹配项sed是一个流编辑器。您可以使用grep定位包含字符串(或代码行)的文件,然后通过sed流式传输(或管道传输)文件以创建新(更新)文

例如,我有多个node_模块,其中一个文件需要修改才能工作

/path/to/file.js中的示例:

Import {something,somethingElse} from “something”
需要:

Import {something} from “something”

我知道grep,sed,但我不知道哪种方法最适合于此。

grep
检查文件中的匹配项
sed
是一个流编辑器。您可以使用
grep
定位包含字符串(或代码行)的文件,然后通过
sed
流式传输(或管道传输)文件以创建新(更新)文件,然后覆盖旧文件

从我的头顶:

STRING="Import {something,somethingElse} from “something”"
REPLACE="Import {something} from “something”"

MATCHING_FILES=$(grep -r $(DIR) -e "$STRING" -l)
OUTPUT=`mktemp`

for file in "$MATCHING_FILES"; do
    cat $file | sed -e "s/$STRING/$REPLACE/g" > $OUTPUT
    cp $OUTPUT $file
done
对于单个文件,您可以省略
grep
步骤,因为您知道它的路径:

STRING="Import {something,somethingElse} from “something”"
REPLACE="Import {something} from “something”"

OUTPUT=`mktemp`

cat $YOUR_FILE | sed -e "s/$STRING/$REPLACE/g" > $OUTPUT
cp $OUTPUT $YOUR_FILE

在编辑器中打开并更新它?@Alex这对你来说是很好的,只有你。如果您的软件依赖于补丁,而其他不熟悉解决方案的开发人员需要安装第三方软件并应用补丁,那么这还不够。拥有bash脚本或命令行解决方案的目的是消除分布式团队中软件开发的瓶颈,同时可以规划长期解决方案。在这种情况下,我们可能会放弃这个包并重新发布它,因为它是未维护的,并且在所有未来和现在的项目中都是必需的。我想知道是否有一个更干净的解决方案,您可以避免触及您的依赖项,而是尝试解决它。。。你能分享一下由于你想更改这一行而发生的错误吗?@Gershy这显然是最后的选择。团队中的某个人在几个月前已经提交了一份PR,并且有多个问题有待解决。事实上,这就是我们如何找到要更改的文件以及如何更改它的方法。但我不希望每次使用包时都浏览node_模块并对其进行更改。无论这是您想问的问题的答案,Alex的评论都是您在此处实际键入的问题的答案。如果在自动化、包创建等方面有更多的细节,那么你需要回答这个问题并说出它们是什么;否则,这只是一个猜测游戏,“如果你想实现这个,就用这个;或者你想要那个……”我认为这应该行得通。我可以将其存储在bash文件中,然后运行bash文件,对吗?如果是这样,我可以添加一个安装后脚本并运行它。是的,您可以很容易地做到这一点。不过先试试,我做得很快,可能遗漏了一些东西。此外,
mktemp
在某些环境中可能无法工作。它所做的只是在
/tmp
@sproutnik中给你一个文件名等等,我得到了“grep:warning recursive search…”还有如何配置文件路径?示例:
/node\u modules/@react something/something/lib/module/views/something.js
我使用了
匹配的\u文件=$(grep-r$(DIR-config/something.js)-e“$STRING”-l)
我得到了大部分,但是我不明白匹配的_files脚本在做什么,正如我所想的那样。好吧,这里的
grep
所做的就是递归地搜索一个目录以查找匹配的文件。如果您知道需要在哪个文件中更改行,那么过程就简单多了:
STRING=“Import{something,somethingElse}from“something”REPLACE=“Import{something}from“something”OUTPUT=`mktemp`cat$YOUR|u file | sed-e“s/$STRING/$REPLACE/g”>$OUTPUT;cp$输出$文件