Need help with awk


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Need help with awk
# 8  
Old 05-31-2016
As I mentioned in my second comment, I cannot copy and paste the actual inputs in here as the forum complaints that there are too many icons.

I think, I might have confused with my modified output file. What I am after is when I print field 2, the second field you have mentioned should be printed. But unfortunately awk only prints portion of that SOAP XML as there are spaces and newlines. Below is what I get

Code:
<soapenv:Envelope xmlns:soapenv=""http://schemas.xmlsoap.org/soap/envelope/"" xmlns:cai3=""http://schemas.centra.com/cai3g1.2/"" xmlns:opt=""http://schemas.centra.com/""><soapenv:Header><cai3:SessionId>abc_4d728b7db4cf4950b660c37c0ccad7bd</cai3:SessionId><cai3:TransactionId>1605271108449435658</cai3:TransactionId></soapenv:Header><soapenv:Body>

Attached output.txt file is a manually edited file, where I want the entire field 2 with white space and newlines removed

Last edited by Scrutinizer; 05-31-2016 at 11:40 AM.. Reason: code tags
# 9  
Old 05-31-2016
You have confused us because every statement you have made has been contradicted by your examples. You have given us an input text file that is not a text file. You say that your input file is a CSV file (which is normally a set of <newline> delimited records containing comma separated fields). But your CSV file has comma separated records and no field separators or delimiters. And, you say you want to print the 2nd field, but you want to print the 2nd record. You say that you want to remove whitespace and newlines; but your sample output file contains multiple (sometimes even adjacent) space characters. (And, if all whitespace characters were removed, some of the tags in the XML data included in the second record in your "CSV" file would be changed invalidating your XML schema.)

According to the standards, the behavior of awk (and grep and sed) is undefined if the input files being processed are not text files, and (since neither you sample input nor your desired output file contain terminating <newline> characters) your sample input file is not a text file. But, since you seem to only want to process record 2 in a 3+ record input file, the following awk script may be able to get something reliably even though the input is not a text file since it will exit before it gets to the end of the input. As you requested, the output produced by this script is not a "line" and has no trailing (nor embedded) <newline> characters.

You said you want to remove whitespace characters from your output. Instead of doing that, the following converts each string of one or more whitespace characters in the input to a single <space> character in the output.

So, the following awk script does something sort of like what you have requested that might or might not be useful. If this doesn't work for you, PLEASE CLEARLY EXPLAIN EXACTLY WHAT YOU ARE TRYING TO DO and PROVIDE SAMPLES THAT MATCH THE EXPLANATION YOU PROVIDE (in CODE tags):
Code:
awk -v RS=',' '
NR == 2 {
	gsub(/[[:space:]]+/, " ")
	printf("%s", $0)
	exit
}' input.txt

If you want to try this code on a Solaris/SunOS system, change awk to /usr/xpg4/bin/awk. (Note that nawk won't work for this script on Solaris/SunOS systems either.)

Note that I named the input file input.txt because that is the name of the input file you supplied. But, I strongly object to naming any file that is not a text file with the filename extension .txt!
# 10  
Old 06-01-2016
Thanks again for persisting with my confusing comments Smilie

You latest code works, but again because of my poor description the results are not as exactly what I expected when I have multiple records

To clear things out
1. Fields are separated by ,
2. Records are separated by " at start of a line

The sample input I provided had only 1 record and 3 fields
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk output yields error: awk:can't open job_name (Autosys)

Good evening, Im newbie at unix specially with awk From an scheduler program called Autosys i want to extract some data reading an inputfile that comprises jobs names, then formating the output to columns for example 1. This is the inputfile: $ more MapaRep.txt ds_extra_nikira_usuarios... (18 Replies)
Discussion started by: alexcol
18 Replies

2. Shell Programming and Scripting

Pass awk field to a command line executed within awk

Hi, I am trying to pass awk field to a command line executed within awk (need to convert a timestamp into formatted date). All my attempts failed this far. Here's an example. It works fine with timestamp hard-codded into the command echo "1381653229 something" |awk 'BEGIN{cmd="date -d... (4 Replies)
Discussion started by: tuxer
4 Replies

3. Shell Programming and Scripting

Passing awk variable argument to a script which is being called inside awk

consider the script below sh /opt/hqe/hqapi1-client-5.0.0/bin/hqapi.sh alert list --host=localhost --port=7443 --user=hqadmin --password=hqadmin --secure=true >/tmp/alerts.xml awk -F'' '{for(i=1;i<=NF;i++){ if($i=="Alert id") { if(id!="") if(dt!=""){ cmd="sh someScript.sh... (2 Replies)
Discussion started by: vivek d r
2 Replies

4. Shell Programming and Scripting

HELP with AWK one-liner. Need to employ an If condition inside AWK to check for array variable ?

Hello experts, I'm stuck with this script for three days now. Here's what i need. I need to split a large delimited (,) file into 2 files based on the value present in the last field. Samp: Something.csv bca,adc,asdf,123,12C bca,adc,asdf,123,13C def,adc,asdf,123,12A I need this split... (6 Replies)
Discussion started by: shell_boy23
6 Replies

5. Shell Programming and Scripting

awk command to compare a file with set of files in a directory using 'awk'

Hi, I have a situation to compare one file, say file1.txt with a set of files in directory.The directory contains more than 100 files. To be more precise, the requirement is to compare the first field of file1.txt with the first field in all the files in the directory.The files in the... (10 Replies)
Discussion started by: anandek
10 Replies

6. Shell Programming and Scripting

Comparison and editing of files using awk.(And also a possible bug in awk for loop?)

I have two files which I would like to compare and then manipulate in a way. File1: pictures.txt 1.1 1.3 dance.txt 1.2 1.4 treehouse.txt 1.3 1.5 File2: pictures.txt 1.5 ref2313 1.4 ref2345 1.3 ref5432 1.2 ref4244 dance.txt 1.6 ref2342 1.5 ref2352 1.4 ref0695 1.3 ref5738 1.2... (1 Reply)
Discussion started by: linuxkid
1 Replies

7. Shell Programming and Scripting

Problem with awk awk: program limit exceeded: sprintf buffer size=1020

Hi I have many problems with a script. I have a script that formats a text file but always prints the same error when i try to execute it The code is that: { if (NF==17){ print $0 }else{ fields=NF; all=$0; while... (2 Replies)
Discussion started by: fate
2 Replies

8. Shell Programming and Scripting

awk: assign variable with -v didn't work in awk filter

I want to filter 2nd column = 2 using awk $ cat t 1 2 2 4 $ VAR=2 #variable worked in print $ cat t | awk -v ID=$VAR ' { print ID}' 2 2 # but variable didn't work in awk filter $ cat t | awk -v ID=$VAR '$2~/ID/ { print $0}' (2 Replies)
Discussion started by: honglus
2 Replies

9. Shell Programming and Scripting

scripting/awk help : awk sum output is not comming in regular format. Pls advise.

Hi Experts, I am adding a column of numbers with awk , however not getting correct output: # awk '{sum+=$1} END {print sum}' datafile 2.15291e+06 How can I getthe output like : 2152910 Thank you.. # awk '{sum+=$1} END {print sum}' datafile 2.15079e+06 (3 Replies)
Discussion started by: rveri
3 Replies

10. Shell Programming and Scripting

Awk problem: How to express the single quote(') by using awk print function

Actually I got a list of file end with *.txt I want to use the same command apply to all the *.txt Thus I try to find out the fastest way to write those same command in a script and then want to let them run automatics. For example: I got the file below: file1.txt file2.txt file3.txt... (4 Replies)
Discussion started by: patrick87
4 Replies
Login or Register to Ask a Question