Piping commands using xargs

 
Thread Tools Search this Thread
Top Forums UNIX for Beginners Questions & Answers Piping commands using xargs
# 8  
Old 11-29-2017
Quote:
Originally Posted by april
I tried both methods from Robin and they both worked. I see the file names and the grep results following each file name.

I tried Don's suggestion
Code:
echo "folder1/folder2 files in $targz..."

. That did not give me the file names. I only see the grep results.

Thank you all for your help.
Note that if you change the pattern you're looking for in the grep you also have to make a corresponding change to the first part of the string in the echo.
# 9  
Old 12-08-2017
I want to thank you all again for the replies. When I first read your comments about the standout output issues, I really didn't understand what you were talking about. Today I had to use the grep results and manipulate it with sed. I noticed after the sed, the file names were not lined up in the right place. I re-read your replies many times and did a lot of debugging. I finally understand!!!

Don't know if it's the best way to fix the problem but it does the job:
Code:
for targz in *.tar.gz
do
   echo "$targz" >&1
   tar -tf $targz | grep folder1/folder2>&1
done | sed ...

I wouldn't know to do any of these if you did not make the suggestions.
Thank you very much!!!
# 10  
Old 12-08-2017
Glad you benefited from these fora, and hope you will in the future.

Two comments, though:
- the >&1 is pointless, as it means "duplicate fd1 (file descriptor) from fd1", and echo writes to fd1 anyhow.
- as sed has "grepping" capabilities by default, why don't you do everything needed in one sed command? If you need help on this, pls. post sample data and specific requirements.
# 11  
Old 12-08-2017
When I was started testing, the grep ... was put after the done. As a result, I only saw the grep results without the filenames so it appeared the filenames were "missing". I added the >&1 to make sure the filenames go to standad output because I didn't know why the names were "missing" at that time. I finally moved the |grep ... inside the loop and the names showed up in the output.

After reading your comments, I removed the >&1 and I still got the same output. Cool. Thank you.

Whoa, sed has grep capabilities??? Let me read about it first and if I still need help, I will post a new thread. Thank you!
# 12  
Old 12-13-2017
Note that xargs reads a file one line at a time or it gets the equivalent data via a pipe. Its input file could be something you created/edited or from an ls or find command. The first argument of xargs is the command you want to run, other arguments are parameters (if any) of that command. Other arguments of your command are the list read into xargs.

For example, if myfile.txt contains:
file1
file2
file3

you could look for the word sample in all three files, ignoring case with the line
Code:
xargs <myfile.txt grep -i sample
   --- and what would be excuted is ---
grep -i sample file1 file2 file3

.

HTH
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Proper chaining and piping of commands

can someone please help me fix the below one liner? what i want to do is run a command, and if that command is successful, pipe the output of the command to another command. i'd prefer not to use any temp files for this. who -blahblah ; if ; then echo exit; fi | egrep username (2 Replies)
Discussion started by: SkySmart
2 Replies

2. Shell Programming and Scripting

Xargs: multiple commands to each argument

Hello. There is my one-liner to get subjects of potential spam mails sudo exiqgrep -bf "spamer@example.com" |cut -d' ' -f1 |xargs -I ~ sudo /usr/sbin/exim -Mvh ~ |grep 'Subject: ' I want to insert blank line after each iteration to make output more readable. I tried sudo exiqgrep -bf... (1 Reply)
Discussion started by: urello
1 Replies

3. UNIX for Dummies Questions & Answers

Piping commands

Hi I am tryin to undertand piping command1|command2 from what i learn output of cammand 2 is an intput for command 1 right? If so . What dose next sequence do cat f1 >> f2 | grep '^' I think it takes context of f1 and Concatenate's it to f2 and then looks for ....i don't know..... (7 Replies)
Discussion started by: iliya24
7 Replies

4. UNIX for Dummies Questions & Answers

Piping multiple commands

Using the below code I want to find all .sff files and extract them. This works but it seems very cheap. Is there a safer more efficient way to go about this? #!/bin/bash G1=(/home/dirone) find ${G1} -type f -name \*.sff | xargs python /usr/local/bin/sff_extract.py (3 Replies)
Discussion started by: jrymer
3 Replies

5. Shell Programming and Scripting

piping problem with xargs

I'm trying to pipe the output from a command into another using xargs but is not getting what I want. Running this commands: find . -name '33_cr*.rod' | xargs -n1 -t -i cut -f5 {} | sort -k1.3n | uniq | wc -l give the following output: cut -f5 ./33_cr22.rod cut -f5 ./33_cr22.rod ... 9224236... (7 Replies)
Discussion started by: ivpz
7 Replies

6. Solaris

Piping results of 'ls' to 'find' using 'xargs'

I'm trying to get a count of all the files in a series of directories on a per directory basis. Directory structure is like (but with many more files): /dir1/subdir1/file1.txt /dir1/subdir1/file2.txt /dir1/subdir2/file1.txt /dir1/subdir2/file2.txt /dir2/subdir1/file1.txt... (4 Replies)
Discussion started by: MartynAbbott
4 Replies

7. Shell Programming and Scripting

Piping through commands read as variables from file

This is going to be part of a longer script with more features, but I have boiled it down to the one thing that is presently stumping me. The goal is a script which checks for updates to web pages that can be run as a cron job. The script reads (from a tab-delim file) a URL, an MD5 digest, and an... (1 Reply)
Discussion started by: fitzwilliam
1 Replies

8. UNIX for Dummies Questions & Answers

use of xargs and prune piping with find command.

Can anyone interpret and tell me the way the below command works? find * -name "*${msgType}" -mtime +${archiveDays} -prune -type f -print 2>/dev/null | xargs rm -f 2> /dev/null Please tell me the usage of prune and xargs in the above command? Looking forward your reply. Thanks in... (1 Reply)
Discussion started by: venkatesht
1 Replies

9. Shell Programming and Scripting

Can Xargs execute multiple commands of evry input file

Hello , I am trying to print the footer of evry file in the given directory with xargs command like follows ls -1 | xargs -I {} gzcat {} | tail -1 now problem with this is only last file foooter is getting printed as " | tail -1 " is getting executed for the last file. I know this can... (4 Replies)
Discussion started by: nilesrex
4 Replies

10. UNIX for Dummies Questions & Answers

Executing commands with xargs

I have a SQL script that requires values from the environment in order to execute. I found a way to get the desired results but my process is a little choppy. Any suggestions on how to clean this up would be greatly appreciated. SQL Script ------------- select a, b, c from d where a =... (1 Reply)
Discussion started by: bmopal
1 Replies
Login or Register to Ask a Question