-7

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.

Thanks!

Rezzy
  • 111
  • 1
  • 2
  • 10
  • _"I would need to cut the output of grep to just the first 5 items"_ -- use `head`. Type `man head` on your terminal or read its [documentation](https://man7.org/linux/man-pages/man1/head.1.html) online. – axiac Mar 26 '23 at 17:08

1 Answers1

1

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'
bovop4
  • 224
  • 1
  • 9