开发者

grep pipe with sed

开发者 https://www.devze.com 2023-01-31 18:30 出处:网络
This is my bash command grep -rl \"System.out.print\" Project1/ | xargs -I{} grep -H -n \"System.out.print\" {} |

This is my bash command

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/

What I'm trying to do here is,I'm trying to iterate through sub folders and check what files contains "System.out.print" (using grep开发者_Go百科) using 2nd grep trying to get file names and line numbers using sed command I display those to console. from here I want to remove "System.out.print" with "XXXXX" how I can pipe sed command to this? pls help me thanxx


GNU sed has an option to change files in place:

find Project1/ -type f | xargs sed -i 's/System\.out\.print/XXXXX/g'

Btw, your script could be written as:

grep -rsn 'root' /etc/ |
    awk -F: '{ print "filename is", $1, "and line number is", $2 }'


I'm just building on hop's answer, which I found to be more useful than find -exec. I had search_text dispersed all over my computer, in logs, config files and so on, but I didn't want to search (or especially change) anything in /dev, /sys, /proc, and so on. One note, read man xargs; it doesn't like file names with spaces.

grep -HriIl --exclude-dir=dev --exclude-dir=proc --exclude-dir=sys search_text / | xargs sed -i 's/search_text/replace_text/g'
0

精彩评论

暂无评论...
验证码 换一张
取 消