通过 shellscript 编辑文件? [复制]

Posted

技术标签:

【中文标题】通过 shellscript 编辑文件? [复制]【英文标题】:Editing files through a shellscript? [duplicate] 【发布时间】:2020-09-17 06:38:03 【问题描述】:

我需要解压缩一个文件,并且对于该文件中的每个文档,我需要对注释进行更正(这些文件是用 C 编写的)。我对如何为文件中的每个文档执行此操作有点困惑(我不知道文档的数量或它们的名称),是否可以在文件夹中编写一个 for 循环来打开每个单独记录,然后在 shellscript 中编辑它们?

我也对 sed 和 awk 之间的区别以及我应该在这里使用哪个感到困惑。我需要编辑评论(以 // 开头)并相信我应该使用 awk 但不太确定。

我的伪代码(到目前为止)就是这样

unzip $1
edit_comment()
    cat file1 file2 ... filen > total.txt
    *some awk command that will search for all instances of // and replace the text on that line (after 
    the //) with a new comment*

谢谢!

【问题讨论】:

这能回答你的问题吗? How to do a recursive find/replace of a string with awk or sed? 【参考方案1】:

我相信你正在寻找How to do a recursive find/replace of a string with awk or sed。

假设: - 参数$1 是一些folder.tar.gzarchive.zipblah.bz4 - 应更改该解压缩存档中包含 cmets 的所有文件

dir=$(echo $1 | sed 's#\..*##')
find $dir -type f -print0 | xargs -0 sed -i 's#//old comment #//new comment#'

【讨论】:

是的,抱歉,您的假设是正确的。我有一个要传递命令行参数的文件夹,需要解压缩,然后更改文件中的所有 (C) cmets。虽然我犯了一些错误,但我确实知道所有文件的名称(以及有多少)。我错过的唯一其他信息是所有文件都是用 C 编写的,需要更改它们的 cmets(cmets 以 // 开头),但是一个文件是用 bash 编写的,需要更改注释(显然以 # 开头)。

以上是关于通过 shellscript 编辑文件? [复制]的主要内容,如果未能解决你的问题,请参考以下文章

shell脚本:通过在文件夹中的所有文件中搜索来查找字符串? [复制]

在完成MySQL导入后在链接的容器上执行shellscript

第十章 Vim程序编辑器学习

Linux程序编辑器

使用vi编辑器修改配置文件时,如何快速复制,粘贴多行文字内容

如何在 Shell Scripting 中检查目录是不是为空? [复制]