用sed grep管

123*_*3Ex 3 bash grep sed

这是我的bash命令

grep -rl "System.out.print" Project1/ | 
    xargs -I{} grep -H -n "System.out.print" {} |
    cut -f-2 -d: |
    sed "s/\(.*\):\(.*\)/filename is \1 and line number is \2/
Run Code Online (Sandbox Code Playgroud)

我在这里尝试做的是,我正在尝试迭代子文件夹并使用第二个grep检查哪些文件包含"System.out.print"(使用grep)尝试使用sed命令获取文件名和行号显示那些控制台.从这里我想删除"System.out.print"与"XXXXX"如何管道sed命令到这个?请帮助我thanxx

小智 10

GNU sed可以选择更改文件:

find Project1/ -type f | xargs sed -i 's/System\.out\.print/XXXXX/g'
Run Code Online (Sandbox Code Playgroud)

顺便说一句,你的脚本可以写成:

grep -rsn 'root' /etc/ |
    awk -F: '{ print "filename is", $1, "and line number is", $2 }'
Run Code Online (Sandbox Code Playgroud)