Visit Our UNIX and Linux User Community


Understanding Xargs


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Understanding Xargs
# 8  
Old 12-28-2017
That's the problem: I know that instead of {} we could use any other symbol which would stand for the same thing. I know that xargs is essentially a loop that collects collects arguments and makes an utility execute it till the original input is exhausted. But what {} in the command line stands for actually? Is it empty space? If yes, is that the empty space that xargs is watching for in input? Or maybe it's a variable?

Also.

1. Could it be that in this case using xargs is equivalent to Find-And-Replace. Can we replace any word of the input to whatever comes to our mind


2.Does -R means a number of arguments replacement occurs in?

3. Can we replace any input with whatever we want with -I?

Could you please give an example of using xargs with both -I and -R options?

Last edited by rbatte1; 01-09-2018 at 07:47 AM.. Reason: Added ICODE tags
This User Gave Thanks to scrutinizerix For This Post:
# 9  
Old 12-30-2017
Quote:
Originally Posted by scrutinizerix
That's the problem: I know that instead of {} we could use any other symbol which would stand for the same thing. I know that xargs is essentially a loop that collects collects arguments and makes an utility execute it till the original input is exhausted. But what {} in the command line stands for actually? Is it empty space? If yes, is that the empty space that xargs is watching for in input? Or maybe it's a variable?
I don't understand your question. You chose to use the string {} when you used it as the option-argument to the -I option. You could have chosen any string you wanted. You chose {}.

Quote:
Also.

1. Could it be that in this case using xargs is equivalent to Find-And-Replace. Can we replace any word of the input to whatever comes to our mind
No! There is no Find operation here. You are constructing a command line to be executed by xargs for each line it reads from its standard input. Each occurrence of replstr ({} in your example) in the first replacements arguments given to the command in your invocation of xargs that contain the string replstr will be replaced by the contents of one line read from standard input.

Quote:
2.Does -R means a number of arguments replacement occurs in?
The -R option-argument specifies the maximum number of arguments containing replstr in which replstr will be replaced by the contents of an input line.

Quote:
3. Can we replace any input with whatever we want with -I?
NO! The xargs utility doesn't replace any input! It replaces the replstr -I option-argument string found in command line arguments being used to construct commands to be invoked by xargs in up to replacements arguments that contain replstr.

Quote:
Could you please give an example of using xargs with both -I and -R options?
If the file in.txt contains:
Code:
a
b c d
e

then the output produced by the command:
Code:
xargs -IX -R3 echo 1 X 2 XX 3 "X X" 4 X < in.txt

will be:
Code:
1 a 2 aa 3 a a 4 X
1 b c d 2 b c db c d 3 b c d b c d 4 X
1 e 2 ee 3 e e 4 X

Note that with -R3, the X in the last argument to be passed to echo is not replaced by the contents of an input line because all occurrences of X have already been replaced in three earlier arguments. With the command:
Code:
xargs -IX -R1 echo 1 X 2 XX 3 "X X" 4 X < in.txt

the output would be:
Code:
1 a 2 XX 3 X X 4 X
1 b c d 2 XX 3 X X 4 X
1 e 2 XX 3 X X 4 X

replacing replstr (X in this case) only in the first argument that contains replstr.

Last edited by rbatte1; 01-09-2018 at 07:48 AM.. Reason: Retro-fitted the ICODE tags into the quotes I've adjusted in the previous post
This User Gave Thanks to Don Cragun For This Post:
# 10  
Old 01-08-2018
I think there's a simpler way to solve this problem.

The -I option is written to solve a hole in xargs's features.

xargs lets you do this:

Code:
echo a b c | xargs echo -option # xargs runs echo -option a b c

But what if you wanted to run echo a b c -option ? The basic syntax has no way to do that, it can't append arguments, just prepend.

But the -I syntax lets you do that:

Code:
echo a b c | xargs -I %% cat %% -option # Substitute %% -option with a b c, resulting in a b c -option

That is all -I does.

As for what line means to xargs? Usually, nothing. It splits apart text on any whitespace and only cares about lines in particular if you tell it to.

Last edited by rbatte1; 01-09-2018 at 07:49 AM.. Reason: Added ICODE tags to match the updates I'd made in the previous posts
This User Gave Thanks to Corona688 For This Post:
# 11  
Old 01-13-2018
That's how I ultimately came to the understanding:
Understanding Xargs-xargs_infographicsnewerjpg

Previous Thread | Next Thread
Test Your Knowledge in Computers #613
Difficulty: Medium
Examples of complex numbers in Python are (-5+4j) and (2.3 - 4.6j).
True or False?

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

xargs

Can I use xargs to send a list of commands to a process, to be acted upon individually? Here's what I have: a file that contains numbers, one per line. The desired outcome it to send each number to a DB2 query. I thought xargs would work, but it doesn't. I tried it like this: cat file | xargs |... (4 Replies)
Discussion started by: jpprial
4 Replies

Featured Tech Videos