当我使用grep查找我需要的文本时,它将显示包含与给定模式匹配的行。
例如,
# grep -r ".*Linux" *
path0/output.txt:I hope you enjoyed working on Linux.
path1/output1.txt:Welcome to Linux.
path2/output2.txt:I hope you will have fun with Linux.
然后,我想编辑文件path2/output2.txt,因此,我输入了vim path2/output2.txt。
但是,我不认为这是一个有效的方法。
如何在grep之后复制
我在Linux上工作,我在Linux终端上执行了for循环,如下所示:
for i in `cat fileName.txt`
do
echo $i
vim $i
done
fileName.txt是一个包含我在vim编辑器中一个接一个打开的大量文件条目的文件。现在,我必须跳过打开中间的其他文件。(即,我必须中断for循环)。有什么建议如何获得运行for循环的PID吗?然后杀掉同样的人。提前谢谢。
尝试使用Sed的美丽,所以我不需要手动更新几百个文件。我会注意到我的雇主只允许使用Win8 (joy),所以我整天使用Cygwin,直到我可以在家里使用我的Linux盒。
以下内容适用于Linux (bash)命令行,而不是Cygwin
> grep -lrZ "/somefile.js" . | xargs -0 -l sed -i -e 's|/somefile.js|/newLib.js|g'
sed: can't read ./testTarget.jsp: No such file or directory
# works
> s
我在写剧本
脚本的一个目标是在与foo匹配之后,递归地在多个文件中添加一个新的.yml代码线。
# Append new line after match in multiple files with sed
## sed -i -se "s/\foo/bar/g" *.yml
grep -rl foo * .| xargs sed -i -e "s/\foo/a bar/g" *.yml
在每次与foo匹配之后,I都期望,因为有了/a,在所有.yml文件中的新行上都会添加bar。
我得到了意外的 Sed输出:sed: can't read *.yml:
我是新来的多克和詹金斯。然而,最终我在jenkins中创建了一个作业,这样我就可以删除存储在linux机器(CentOS7)中的gitlab-runner的卷缓存。
为了实现这一点,我在jenkins中使用以下命令每6小时创建一个定期作业:
docker volume prune -f
然而,它根本不会清理空间。这是jenkins job的输出:
Started by timer
Running as SYSTEM
Building remotely on buildbng17 (gitlab) in workspace /mnt/data0/jenkins/workspace/gitlab