通过 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.gz
或archive.zip
或blah.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