shell command in AWK


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting shell command in AWK
# 1  
Old 06-15-2010
shell command in AWK

Hi experts,

Sorry if it sounds basic question. I am trying to delete all folders except a particular and I have written the following. But its not deleting the folder.
Could you tell me whats wrong?

folders are:
Code:
1 2 3 4 5 6

Code:
ls -l | awk '{ if ($9 != 4) {system(/bin/rmdir $9);print "deleted",$9;}}'

Thanks

Amit

Moderator's Comments:
Mod Comment Use code tags please, ty.

Last edited by zaxxon; 06-15-2010 at 02:02 AM.. Reason: code tags
# 2  
Old 06-15-2010
/bin/rmdir needs to be enclosed by double quotes and leave a blank between the closing double quote and the command itself like:
Code:
ls -l | awk '{ if ($9 != 4) {system("/bin/rmdir " $9);print "deleted",$9;}}'
                                    ^          ^^

You are not omitting the line with "total" so you will get ugly output. This can be changed if you use
Code:
ls -1

instead of
Code:
ls -l

Also you can leave out the closing separator ";" after the last print since there is nothing more to delimit. Also if() is not needed since awk has testing built in like
Code:
ls -1| awk '$0 != "4" {system("/bin/rmdir " $0);print "deleted",$0}'


Last edited by zaxxon; 06-15-2010 at 02:21 AM.. Reason: added comments
# 3  
Old 06-15-2010
Hi,
Try This...

Code:
#!/bin/sh

ls -l | while read line
do
filename=`echo $line | awk '{print $9}'`
if [ "$filename" != "4" ]; then
   rmdir $filename
   if [ $? == 0 ]; then
   echo "$filename deleted"
   fi
fi
done

# 4  
Old 06-15-2010
If you want to do it by shell only, here is a compact way without expecting filenames/dirnames including a blank:
Code:
for a in *; do [ $a != "4" ] && (rmdir $a; echo "$a deleted"); done

# 5  
Old 06-15-2010
Thanks All for the help
# 6  
Old 06-15-2010
ls | grep -v 4 | xargs rm -rf

-v is the invert match and it will ignore filename/foldername when we do grep.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Shell Script with following awk command pls help

Hi I want to create a shell script with the following awk command & also get the filenames in output. awk '/<catetcsecuretty0>/ {p=1} /<catvarlogmessages0>/ {p=0} p' *.xml As there will be multiple outputs related to many xml files I cannot identify which output belongs to which file ... (5 Replies)
Discussion started by: sharp488
5 Replies

2. Shell Programming and Scripting

awk command not getting executed in shell script

I am able to execute awk command from shell prompt. but the same command is not getting executed when written and run in a bash script the command from bash cmd prompt. awk '/world/{for (i=2; i<NF; i++) printf $i " "; print $NF}1' myfile >tmp$$ ; mv tmp$$ myfile file: # hello world my... (4 Replies)
Discussion started by: ashima jain
4 Replies

3. Shell Programming and Scripting

Unable to pass shell script variable to awk command in same shell script

I have a shell script (.sh) and I want to pass a parameter value to the awk command but I am getting exception, please assist. diff=$1$2.diff id=$2 new=new_$diff echo "My id is $1" echo "I want to sync for user account $id" ##awk command I am using is as below cat $diff | awk... (2 Replies)
Discussion started by: Ashunayak
2 Replies

4. Shell Programming and Scripting

If else condition inside for loop of awk command in UNIX shell scripting

Hi , Please excuse me for opening a new thread i am unable to find out the syntax error in my if else condition inside for loop in awk command , my actual aim is to print formatted html td tag when if condition (True) having string as "failed", could anyone please advise what is the right... (2 Replies)
Discussion started by: karthikram
2 Replies

5. Shell Programming and Scripting

Shell script with awk command for counting in a file

Hi, I hope you can help me with the awk command in shell scripting. I want to do the following, but it doesn't work. for i in $REF1 $REF2 $REF3; do awk '{if($n>=0 && $n<=50000){count+=1}} END{print count}' ${DIR}${i} >${DIR}${i}_count.txt done REF1 to REF3 are only variables for .txt... (1 Reply)
Discussion started by: y.g.
1 Replies

6. Shell Programming and Scripting

use shell variable in awk command

Trying to do something like this ls -lrt | awk '$9=="test5"' -rw-r--r-- 1 lrmq db2iadm1 381 Sep 20 21:56 test5 But now, I need to give a variable in place of test5. For example let's define x as test5 x=test5 ls -lrt | awk '$9=="$x"' This doesn't seem to be working. It doesn't take the... (4 Replies)
Discussion started by: blazer789
4 Replies

7. UNIX for Dummies Questions & Answers

Passing Shell Variables to an awk command

Hello, I have two files File1 & File2. File1 76 135 136 200 250 345 .... File2 1 24 1 35 1 36 1 72 .... I want to get all the values form File2 corresponding to the range in File 1 and feed it to a program. Is the code below right? Can I pass shell variables to awk in this... (2 Replies)
Discussion started by: Gussifinknottle
2 Replies

8. Shell Programming and Scripting

awk command in script gives error while same awk command at prompt runs fine: Why?

Hello all, Here is what my bash script does: sums number columns, saves the tot in new column, outputs if tot >= threshold val: > cat getnon0file.sh #!/bin/bash this="getnon0file.sh" USAGE=$this" InFile="xyz.38" Min="0.05" # awk '{sum=0; for(n=2; n<=NF; n++){sum+=$n};... (4 Replies)
Discussion started by: catalys
4 Replies

9. Shell Programming and Scripting

awk command not working from the shell script

Hi, When i run the below command i am able to get the output. awk '/BEGIN DSSUBRECORD/{c=3;next}c-->0' abc.txt | awk '/END DSSUBRECORD/{exit}{print}' | awk '/Owner/{exit}{print}' | awk '{n2=n1;n1=n;n=$0;if(NR%3==0){printf"%s,%s,%s\n",n2,n1,n}}' Output: Name "file_name", ... (5 Replies)
Discussion started by: onesuri
5 Replies

10. Shell Programming and Scripting

How to use shell command in awk ?

Hello, i was just wondering how can i use shell command in awk script file? say suppose i want to print the date at the top of the report i generate using awk how can i do that? Thanks in advance! :) (5 Replies)
Discussion started by: salman4u
5 Replies
Login or Register to Ask a Question