awk trouble inside another command


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users awk trouble inside another command
# 1  
Old 08-02-2019
awk trouble inside another command

I tried running this.

Code:
dsh -w server1 'lsof /audit | awk '{ print $2 }''

It did not like above so I tried to escape the single parenthesis at the end.
Code:
dsh -w server1 'lsof /audit | awk '{ print $2 }\''

It then hung so I changed up the parenthesis to this. This worked.
Code:
dsh -w server1 "lsof /audit | awk '{ print $2 }'"

I then noticed I needed to add some field separators. This is not working all. I need both colon space, and space all by its self.
Code:
dsh -w server1 "lsof /audit | awk 'BEGIN { FS=":" } { print $2 }'"
syntax error The source line is 1.
The error context is
                >>> { <<<
awk: The statement cannot be correctly parsed.

After I get the above to work I like to do this and add the field separator.
Code:
dsh -w server1 "kill $(lsof /audit | awk '{print $2}')"

# 2  
Old 08-03-2019
I've stayed away because I could not get past the dsh -w
AIX dsh and linux dash (sometimes dsh) do not have a -w option. Per manpages for both. What does that do -- dsh -w ?

So I'm not sure what is going on. Plus the whole code design concept seems to me to be based on 'one-liner' thinking. Which is cool but not always maintainable as you are finding out.
It looks like you are trying to kill processes with files open - somewhere special. What OS and shell are you using?
# 3  
Old 08-03-2019
Quote:
Originally Posted by jim mcnamara
I've stayed away because I could not get past the dsh -w
AIX dsh and linux dash (sometimes dsh) do not have a -w option. Per manpages for both. What does that do -- dsh -w ?

So I'm not sure what is going on. Plus the whole code design concept seems to me to be based on 'one-liner' thinking. Which is cool but not always maintainable as you are finding out.
It looks like you are trying to kill processes with files open - somewhere special. What OS and shell are you using?
I am using AIX. Normally dsh runs a command against all of your servers in your server list. When you add the -w option to dsh it allows you to select which server you want to run your command on. In my case I want to run my command on server1. I could run my command without the -w option but it would be harder to debug my problem.

I am not very good at using multiple single and double quotes, and escaping. I think that is my issue.
# 4  
Old 08-03-2019
Ok, thanks.

Try this to see if it is working the way you want -- before you try killing processes:

Code:
dsh -w server1 "lsof /audit | awk '{print $2}' | while read pid; do; echo $pid ; done"

Next try this to see the result. Your process may not have the permissions it needs to kill other processes. I can't know.
Code:
dsh -w server1 "lsof /audit | awk '{print $2}' | while read pid; do; kill $pid ; done"

For stuff like this -- In general I usually write a shell script that does what I want. Then I scp a copy to each server; chmod +x the script, then use ssh (similar to dsh) to invoke my script as required on each server. That way I do not get so many single-double quote issues.
on the server.
# 5  
Old 08-04-2019
Quote:
Originally Posted by cokedude
...I like to do this and add the field separator.
Would
Code:
 ... | awk -F\: '{print $2}')"

work? Mayhap with a double \\.
# 6  
Old 08-04-2019
The problem is that the remote code runs within quotes, requiring extra escapes and escape-escapes. Try to run more locally
Code:
dsh -w server1 'lsof /audit' | awk '{ print $2 }'

Now the pipe and its right side are outside the quotes and run locally. The drawback is more load on the network.
# 7  
Old 08-04-2019
If the only purpose is "kill" then try "fuser -k"
Code:
dsh -w server1 "fuser -k /audit"

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Trouble using awk command

Hi, I have 2 .txt pads containing data. I need a script which reads content of one .txt file, performs some operations and calculates a number which is stored in a variable. Now , all the content of another .txt pad should be appended to first .txt pad at pre calculated nth line number. ... (4 Replies)
Discussion started by: Ravindra Swan
4 Replies

2. Shell Programming and Scripting

Trouble with awk command

Hi, I need to read a string with ; separated using loop one filed by one field and perform some operation. Can you please check and let me know how to print command parameterised. key=phani;ravi;kiran number_of_keys=`echo $key|awk '{print NF}' FS=';'` for (( i = 1; i <= $number_of_keys;... (4 Replies)
Discussion started by: Ravindra Swan
4 Replies

3. Shell Programming and Scripting

Command in inside awk statement

Hello can you please help me with below script which is meant to delete clients from multiple netbackup policies I want to run a command insdie awk statement apparelnlty this script is not working for me for i in $( cat clients_list) do bppllist -byclient $i | awk... (6 Replies)
Discussion started by: Sara_84
6 Replies

4. Shell Programming and Scripting

Grep command inside awk

Hi, I would like to use grep command inside awk. Here is my requirement below : file.txt col1 col2 col3 col 4 col 5 wrxwrx 124 jun 3 Sensex.EMEA wrxwrx 120 jun 4 Emex.US wrxwrx 130 feb 3 passion.AUS wrxwrx 145 feb 9 lession.AUS wrxwrx 130 feb 5 pass.US wrxwrx 130 feb 8... (5 Replies)
Discussion started by: Balasankar
5 Replies

5. Shell Programming and Scripting

Help in using date command inside awk

Hi All, bash-3.2$ autorep -J BOX_NAME% -l0 | grep BOX_NAME| awk -f awkScript.awk sh: -c: line 0: unexpected EOF while looking for matching `"' sh: -c: line 1: syntax error: unexpected end of file BOX_NAME SU 06/21/2013 03:44:03 06/21/2013 07:46:37 0 #My awkfile { ... (3 Replies)
Discussion started by: ddspark
3 Replies

6. Shell Programming and Scripting

Multiple command execution inside awk command during xml parsing

below is the output xml string from some other command and i will be parsing it using awk cat /tmp/alerts.xml <Alert id="10102" name="APP-DS-ds_ha-140018-componentFailure-S" alertDefinitionId="13982" resourceId="11427" ctime="1359453507621" fixed="false" reason="If Event/Log Level(ANY) and... (2 Replies)
Discussion started by: vivek d r
2 Replies

7. Shell Programming and Scripting

Trouble with passing Variable from bash to awk gsub command

Would really appreciate it if someone could point out my mistake in this line of code, i've been staring blankly at it trying everything i can think of some time now and coming up with nothing. #!/bin/bash echo "Enter Username" read Username awk -F: -v var=${Username} '/^var:/... (9 Replies)
Discussion started by: Nostyx
9 Replies

8. Shell Programming and Scripting

How to use same variable value inside as well as outside of the awk command?

Hi Jim, The following script is in working state. But i m having one more problem with awk cmd. Could you tell me how to use any variable inside awk or how to take any variable value outside awk. My problem is i want to maintain one property file in which i am declaring variable value into that... (12 Replies)
Discussion started by: Ganesh Khandare
12 Replies

9. Shell Programming and Scripting

Running command inside awk

Hi, I have a awk script to read a CSV file. After reading the values i want to call a executable (nameely call_it) with the values what i read from the scv file. I dont want to use system command inside the awk. Is there any other way to run the executable from the awk script Thanks ... (1 Reply)
Discussion started by: Raghuram.P
1 Replies

10. AIX

Trouble formatting egrep command with AWK

Hi, I'm new to scripting and AIX. I'm running the following: lspv | awk '{ print "lspv",$1" | egrep 'PP\|PHYSICAL'; lspv -l",$1 }' Which creates this command: lspv hdisk0 | egrep PP|PHYSICAL; lspv -l hdisk0 lspv hdisk1 | egrep PP|PHYSICAL; lspv -l hdisk1 Troube is, I need the... (2 Replies)
Discussion started by: cruiser
2 Replies
Login or Register to Ask a Question