Help with awk and particular named column print


 
Thread Tools Search this Thread
Top Forums UNIX for Advanced & Expert Users Help with awk and particular named column print
# 1  
Old 12-09-2016
Help with awk and particular named column print

Hi Unix Gurus,

I have some 145+ xml in some folder and I want just loadOperation to be printed. Sample o/p:
Code:
 file1.xml loadOperation="InsertOrUpdate">
 file2.xml loadOperation="Update">
 file3.xml loadOperation="Update">
 file4.xml loadOperation="Append">

In some of them, in the 2nd line, last column is loadOperation; but in some of them last column is sourceTable. But in those cases, 2nd last column is always loadOperation. Sample given:
--Last column is NOT loadOperation
Code:
<DataMapping123 xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" xsd:noNamespaceSchemaLocation="DataMappping123.xsd" name="fileOperation_1_type" table="XYZ" loadOperation="Stage" sourceTable="ABC">

--Last column is loadOperation
Code:
<DataMapping533 xmlns:xsd="http://www.w3.org/2001/XMLSchema-instance" xsd:noNamespaceSchemaLocation="DataMappping533.xsd" name="fileOperation_15_type" table="XYZ" loadOperation="Append">

So I tried the below:
1st with direct $NF print, not getting desired output though:
Code:
head -2 fileName2.xml|tail -1 |awk '{print $NF}'

2nd with conditional statement, still not printing the desired column ( I guess I'm not able to do partial match):
Code:
$ head -2 fileName1.xml|tail -1 |awk -v col=loadOperation '{if ($NF==col) {print $NF} else {print $(NF-1)}}'

my final code will be with for command as below:
Code:
for logTime in `ls *.xml`; do logTailString=`head -2 $logTime|tail -1 |<<here goes the proper awk script>>; echo "$1 $logTime $logTailString"; done

Any type of suggestions welcome. I'm open for ideas.

Cheers,
Sapy.

Last edited by rbatte1; 12-09-2016 at 10:43 AM.. Reason: Changed ICODE tags to CODE tags
# 2  
Old 12-09-2016
Try (untested)
Code:
awk 'FNR == 2 {print FILENAME, ($NF ~ /^load/)?$NF:$(NF-1)}' *.xml

This User Gave Thanks to RudiC For This Post:
# 3  
Old 12-09-2016
Thank you @RudiC, It's worked like a charm.
# 4  
Old 12-09-2016
Hello spas19,

If in case you have more number of files than you could try following.
Code:
for file in *.xml
do
    awk 'FNR == 2 {print FILENAME, ($NF ~ /^load/)?$NF:$(NF-1)}'  $file
done

Thanks,
R. Singh
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Need awk or Shell script to compare Column-1 of two different CSV files and print if column-1 matche

Example: I have files in below format file 1: zxc,133,joe@example.com cst,222,xyz@example1.com File 2 Contains: hxd hcd jws zxc cst File 1 has 50000 lines and file 2 has around 30000 lines : Expected Output has to be : hxd hcd jws (5 Replies)
Discussion started by: TestPractice
5 Replies

2. Shell Programming and Scripting

Awk: Print count for column in a file using awk

Hi, I have the following input in a file & need output as mentioned below(need counter of every occurance of field which is to be increased by 1). Input: 919143110065 919143110065 919143110052 918648846132 919143110012 918648873782 919143110152 919143110152 919143110152... (2 Replies)
Discussion started by: siramitsharma
2 Replies

3. Shell Programming and Scripting

awk Print New Column For Every Two Lines and Match On Multiple Column Values to print another column

Hi, My input files is like this axis1 0 1 10 axis2 0 1 5 axis1 1 2 -4 axis2 2 3 -3 axis1 3 4 5 axis2 3 4 -1 axis1 4 5 -6 axis2 4 5 1 Now, these are my following tasks 1. Print a first column for every two rows that has the same value followed by a string. 2. Match on the... (3 Replies)
Discussion started by: jacobs.smith
3 Replies

4. Shell Programming and Scripting

awk command to print only selected rows in a particular column specified by column name

Dear All, I have a data file input.csv like below. (Only five column shown here for example.) Data1,StepNo,Data2,Data3,Data4 2,1,3,4,5 3,1,5,6,7 3,2,4,5,6 5,3,5,5,6 From this I want the below output Data1,StepNo,Data2,Data3,Data4 2,1,3,4,5 3,1,5,6,7 where the second column... (4 Replies)
Discussion started by: ks_reddy
4 Replies

5. Shell Programming and Scripting

awk/sed script to print each line to a separate named file

I have a large 3479 line .csv file, the content of which looks likes this: 1;0;177;170;Guadeloupe;x 2;127;171;179;Antigua and Barbuda;x 3;170;144;2;Umpqua;x 4;170;126;162;Coos Bay;x ... 1205;46;2;244;Unmak Island;x 1206;47;2;248;Yunaska Island;x 1207;0;2;240;north sea;x... (5 Replies)
Discussion started by: kalelovil
5 Replies

6. Shell Programming and Scripting

Print column with awk

Hi Masters , Need your help regarding the below issue . I am creating a new file with awk where diff rows in a particular column will different according to the user i/p. If user i/p is 10,11 and 12 and requests for 6 rows then in a particular column will print with 10 10 11 11 12... (6 Replies)
Discussion started by: Pratik4891
6 Replies

7. Shell Programming and Scripting

Need to different value print in same column by awk

Hi , i am trying to prepare a text file by awk . My code is like below echo "$a $b $c $d $e $f $g $h "|nawk '{for(i=1;i<=5;i++){printf("%s\t %s\t %s\t %s\t %s\t %s\t %s\t %s\t\n", $1 , $2 ,$3 ,$4 ,$5 ,$6 ,$7 ,$8)}}' >> tempfile.txt Now my req is $d will print as per user req . if user inputs... (2 Replies)
Discussion started by: Pratik4891
2 Replies

8. Shell Programming and Scripting

find expression with awk in only one column, and if it fits, print whole column

Hi. How do I find an expression with awk in only one column, and if it fits, then print that whole column. 1 apple oranges 2 bannanas pears 3 cats dogs 4 hesaid shesaid echo "which number:" read NUMBER (user inputs number 2 for this example) awk " /$NUMBER/ {field to search is field... (2 Replies)
Discussion started by: glev2005
2 Replies

9. Shell Programming and Scripting

Print from second column onwards if $1<=40 using awk

I have a file like below 10 10 21 32 43 54 20 10 25 36 47 58 30 19 20 31 42 53 40 10 24 35 46 57 50 10 28 39 40 51 I need to check if $1 <= 40, then print from $2 onwards. If $1 > 40, the line is not printed. So I would have an output like this 10 21 32 43 54 10 25 36 47... (10 Replies)
Discussion started by: kristinu
10 Replies

10. Shell Programming and Scripting

to print column using awk

suppose u have a file aaaaa aswn 33332 aasdxe sssee 627627 qqhksd dljlljkl 38682682 so have a output 3332 627627 38682682 (2 Replies)
Discussion started by: cdfd123
2 Replies
Login or Register to Ask a Question