Limit output to 5 items

grep -r 'foo' | xargs sed -i 's/foo/bar/g'

I am using this command to replace all items of foo to bar.
However, I want to only replace foo with bar in the first 5 files. Somehow I would need to cut the output of grep to just the first 5 items, or get xargs to only get the first 5 items from the output.


>Solution :

you can use the head command to limit the output of grep to the first 5 results before passing it to xargs.

Here’s the modified command:

grep -r -l 'foo' | head -n 5 | xargs sed -i 's/foo/bar/g'

For items 5 to 10, you can use a combination of head and tail commands to achieve that.

Here’s the command to process items 5 to 10:

grep -r -l 'foo' | head -n 10 | tail -n 6 | xargs sed -i 's/foo/bar/g'

Leave a Reply