Redirection with xargs.


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Redirection with xargs.
# 1  
Old 11-20-2013
Redirection with xargs.

In a dir, i have a huge number of files and i want to replace a occurance
of say "abc" with "xyz".

I tried using grep and xargs but it fails

Code:
grep -l "abc" * | xargs -I{} "sed 's/abc/xyz/g' '{}' > '{}.tmp' "


get an error : xargs: sed 's/abc/xyz/g' '{}' > '{}.tmp' : No such file or directory

I plan to create .tmp files and rename them later

Last edited by Shivdatta; 11-20-2013 at 03:24 AM..
# 2  
Old 11-20-2013
How about a for loop?

Code:
for f in *; do sed 's/abc/xyz/g' < "$f" > "$f.tmp"; done

or I guess if you must use grep and xargs, you'll need to invoke a shell which does the redirection:

Code:
grep -l abc * | xargs -I{} sh -c 'sed "s/abc/xyz/g" "$1" > "$1.tmp"' _ '{}'


Last edited by neutronscott; 11-20-2013 at 03:54 AM..
# 3  
Old 11-20-2013
Below code will create ".tmp" as backup file and will replace abc with xyz in original file.

Code:
grep -l "abc" * | xargs -I {} sed -i".tmp" 's/abc/xyz/' {}

# 4  
Old 11-20-2013
Thanks,

both the solutions (for loop & xargs ) works fine.

Just wondering if i can avoid creating .tmp files and directly replace in the source file itself.
,something like perl does (inplace replacement)
# 5  
Old 11-20-2013
Quote:
Originally Posted by Shivdatta
Just wondering if i can avoid creating .tmp files and directly replace in the source file itself.
,something like perl does (inplace replacement)
perl -i does not replace in the original file itself; it renames (if you provide an extension) or unlinks (if you don't) the original file and writes to a new one. The use of "in-place" in their documentation is misleading.

Similarly, sed -i does not replace in the original file either.

Regards,
Alister

Last edited by alister; 11-20-2013 at 10:26 AM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Xargs

Hi, can anyone tell me in detail ? what the following do in detail ? I am trying to get a largest number in a list Thanks Tao LARGEST=$(echo $* | xargs -n1 | sort -nr | tail -1) (3 Replies)
Discussion started by: ccp
3 Replies

2. Shell Programming and Scripting

Xargs

Hello, I need some help with xargs $ ls aaa bbb ccc ddd$ ls | xargs -I{} ls -la {} -rw-rw-r--. 1 xxx xx 0 May 30 20:04 aaa -rw-rw-r--. 1 xxx xx 0 May 30 20:04 bbb -rw-rw-r--. 1 xxx xx 0 May 30 20:04 ccc -rw-rw-r--. 1 xxx xx 0 May 30 20:04 dddit's possible to have output like this with... (3 Replies)
Discussion started by: vikus
3 Replies

3. Shell Programming and Scripting

Help with xargs

Using the bash shell I'm trying to either create a command for the command line or a script that will show netstat info for a given process name. Here is an example of what I'm trying to do:$ ps aux |grep catalina |grep -v grep | awk '{print $2}' 5132 $ netstat -nlp |grep 5132 (Not all processes... (11 Replies)
Discussion started by: axiopisty
11 Replies

4. Shell Programming and Scripting

xargs

I have dir with many files ( close to 4M ) . $ ls -la total 76392 drwxr-xr-x 10 oracle dba 512 Jun 06 14:39 . drwxr-xr-x 11 oracle dba 512 Dec 20 13:21 .. drwxr-xr-x 2 oracle dba 39074816 Jun 15 14:07 ad I am trying to delete them using... (8 Replies)
Discussion started by: talashil
8 Replies

5. Shell Programming and Scripting

Help with xargs

hi Could any one please tell me the option using which we can run multiple commands using xargs I have list of files, I want to run dos2unix and chmod at one shot on them I tried google n searched man pages but couldnt really find the solution , please help right now im doing this ls... (4 Replies)
Discussion started by: sunilmenhdiratt
4 Replies

6. Shell Programming and Scripting

Xargs and

Hello there, Let me show you a simple example of what I am trying to achieve: 1) I have an input text file with some lines: 1 a 2 b 3 c 2) And I want to run a command with these lines as arguments (+ arbitrary extra arguments). For example: $ command "1 a" "2 b" "3 c" "bye" I... (7 Replies)
Discussion started by: tokland
7 Replies

7. Shell Programming and Scripting

Help in using xargs

Hi, I have a requirement to RCP the files from remote server to local server. Also the RCP has to run in parallel. However using 'xargs' retrives 2 file names during each loop. How do we restrict to only one file name using xargs and loop till remaining files. I use the below code for... (2 Replies)
Discussion started by: senthil3d
2 Replies

8. Shell Programming and Scripting

Using xargs

hi i just want to know that how do we use xargs command to find files which are greater than specified memory in a given directory (6 Replies)
Discussion started by: sumit the cool
6 Replies

9. UNIX for Advanced & Expert Users

xargs -P

I discovered that GNU's xargs has a -P option to allow its processes to run in parallel. Great! Is this a GNU thing, or is it supported by other platforms as well? (4 Replies)
Discussion started by: otheus
4 Replies

10. UNIX for Dummies Questions & Answers

Help with xargs

Hi there, I am trying to move around 3000 files from one directory to another. The mv command is complaining from too many arguments. I tried to use the xargs command but with no luck. Could some body provide help? Regards (4 Replies)
Discussion started by: JimJim
4 Replies
Login or Register to Ask a Question