Sponsored Content
Top Forums Shell Programming and Scripting awk script to call another script based on second column entry Post 302966112 by my_Perl on Monday 8th of February 2016 09:11:24 AM
Old 02-08-2016
awk script to call another script based on second column entry

Hi

I have a text file (Input.txt) with two column entries separated by tab as given below:


Code:
aaa  str1
bbb  str2
cccccc  str3
dddd  str4
eee  str3
ssss  str2
sdf  str3
hhh  str1
fff  str2
ccc  str3
.....
.....
.....

My problem is, I want to write an awk script (say FirstScript) which will call another script (say SecondScript)which will return a string if a match of "str3" is found in the second column. After matching, the string returned by the second script will be written in the third column separated by a tab. If no match is found, the string from the first column will be copied to the corresponding row in the third column.

The desired output OUTPUT.TXT :

Code:
aaa  str1  aaa
bbb  str2  bbb
cccccc  str3   xxx
dddd  str4  dddd
eee  str3  yyy
ssss  str2  ssss
sdf  str3  zzz
hhh  str1  hhh
fff  str2  fff
ccc  str3   xyz
.....
.....
.....

In the output file, OUTPUT.TXT

cccccc str3 xxx
eee str3 yyy
sdf str3 zzz
ccc str3 xyz

Here the input to the SecondScript are cccccc, eee, sdf and ccc respectively for each row. xxx, yyy, zzz and xyz are returned by the SecondScript.



Please help me.



Thanks in advance.Smilie

Last edited by my_Perl; 02-08-2016 at 12:45 PM.. Reason: Editing
 

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

How to call parametrs to awk script

Hi All, I have script to handle nulls in column2 from file1.txt and redirect its output to file2.txt I am confused with run-time command line arguments. b'cause i normal unix we use $1 $2 for two parameters. But in awk it treat $1 as column1. So, i tried with awk -v var1 -v var2... how to... (7 Replies)
Discussion started by: kmsekhar
7 Replies

2. Shell Programming and Scripting

for each different entry in column 1 extract maximum values from column 2 in unix/awk

Hello, I have 2 columns (1st column has multiple entries but the corresponding values in the column 2 may be the same or different.) however I want to extract unique values for each entry in column 1 by assigning the max value from column 2 SDF4 -0.211654 SDF4 0.978068 ... (1 Reply)
Discussion started by: Diya123
1 Replies

3. Shell Programming and Scripting

Call shell script function from awk script

hi everyone i am trying to do this bash> cat abc.sh deepak() { echo Deepak } deepak bash>./abc.sh Deepak so it is giving me write simply i created a func and it worked now i modified it like this way bash> cat abc.sh (2 Replies)
Discussion started by: aishsimplesweet
2 Replies

4. Shell Programming and Scripting

awk based script to print the "mode(statistics term)" for each column in a data file

Hi All, Thanks all for the continued support so far. Today, I need to find the most occurring string/number(also called mode in statistics terminology) for each column in a data file (.csv type). For one column of data(1.txt) like below Sample 1 2 2 3 4 1 1 1 2 I can find the mode... (6 Replies)
Discussion started by: ks_reddy
6 Replies

5. AIX

Commands to call script work from command line but not from Cron entry

My first post evidently did not materialize so I posted it again: Runnning a cron job every 5 mins to send data files to a state facility. My original cron entry at worked fine: 01,06,11,16,21,26,31,36,41,46,51,56 * * * * /home/sftpuser/stateinoc-from-appname.ksh Somewhere I have a... (1 Reply)
Discussion started by: Skyybugg
1 Replies

6. Shell Programming and Scripting

Call awk script

The below awk script (loop.awk) is in the cygwin home directory. I do a cd to the directory where the Sources.txt is (where I would like the data output in), but the script does not run: echo loop | ./loop.awk loop.awk #!/bin/awk -f BEGIN {} cat Sources.txt | while read a do... (10 Replies)
Discussion started by: cmccabe
10 Replies

7. Shell Programming and Scripting

Call script parameter based on dates

Hi Guys, I am having a script which needs to be iterated based on date passed and itrate based on no of months given. #!/bin/bash var_d=$1 months=$2 sh invoke_script var_d i need to iterate the inside script something like below sh invoke_script 170101 sh invoke_script... (4 Replies)
Discussion started by: Master_Mind
4 Replies

8. Shell Programming and Scripting

Sum of a column as new column based on header in a script

Hello, I am trying to store sum of a column as a new column inside a file but have to find the column names dynamically I/p c1,c2,c3,c4,c5 10,20,30,40,50 20,30,40,50,60 If i want to find sum only column c1, c3 and output it as c6,c7 O/p c1,c2,c3,c4,c5,c6,c7 10,20,30,40,50,30,70... (6 Replies)
Discussion started by: mkathi
6 Replies

9. UNIX for Beginners Questions & Answers

Shell script to call and sort awk script and output

I'm trying to create a shell script that takes a awk script that I wrote and a filename as an argument. I was able to get that done but I'm having trouble figuring out how to keep the header of the output at the top but sort the rest of the rows alphabetically. This is what I have now but it is... (1 Reply)
Discussion started by: Eric7giants
1 Replies

10. UNIX for Beginners Questions & Answers

Awk/sed summation of one column based on some entry in first column

Hi All , I am having an input file as stated below Input file 6 ddk/djhdj/djhdj/Q 10 0.5 dhd/jdjd.djd.nd/QB 01 0.5 hdhd/jd/jd/jdj/Q 10 0.5 512 hd/hdh/gdh/Q 01 0.5 jdjd/jd/ud/j/QB 10 0.5 HD/jsj/djd/Q 01 0.5 71 hdh/jjd/dj/jd/Q 10 0.5 ... (5 Replies)
Discussion started by: kshitij
5 Replies
tabs(1) 						      General Commands Manual							   tabs(1)

NAME
tabs - Sets tab stops on terminals SYNOPSIS
tabs [-n] [-T terminal] [+m [margin]] tabs [predefined_tab_flag] [-T terminal] [+m [margin]] tabs [-T terminal] [+m [margin]] number [,number]... tabs [--tab_format_file] The tabs command clears up to 20 previous tabs and sets up to 40 tabs on the terminal according to the supplied tab specifications. STANDARDS
Interfaces documented on this reference page conform to industry standards as follows: tabs: XCU5.0 Refer to the standards(5) reference page for more information about industry standards and associated tags. OPTIONS
Specifies repetitive tab stops separated by a uniform number of column positions, n, where n is a single-digit number. The default usage of tabs with no arguments is equivalent to tabs -8. If you use -0, the tab stops are cleared and no new ones are set. Identifies the terminal so that tabs can set tabs and margins correctly. The terminal argument is one of the conventional terminal names supported by your system. [Tru64 UNIX] If the terminal you specify is not known to the system, tabs tries a general value that works for most terminals. If you do not provide a -T option, tabs uses the TERM shell variable. Moves all tabs to the right number columns, and makes column number+1 the left margin. If m is given without a value, 10 is assumed. The leftmost margin on most terminals is defined by m0. Specifies that tabs should be set to a structured language format that is known to the system. See the section Predefined Tab Flags for a description of these flags. [Tru64 UNIX] Causes tabs to read a file named tab_format_file for format information. The first line of the file must be in the format shown in the section Format Specifications to use this method. The file may contain other lines which are ignored by tabs. Note [Tru64 UNIX] The double dash (--) format is mandatory with this option. OPERANDS
Sets tabs at the named column numbers (a list in ascending order, separated by commas). You can specify up to 40 numbers. If any number except the first has a plus sign prefix, the prefixed number is added to the previous number for the next setting. Thus, the tab lists 1,10,20,30 and 1,10,+10,+10 provide the same tab settings. DESCRIPTION
If you use the tabs command with no options or operands, the terminal tabs are reset to the system defaults for your terminal type. If only the -T option is used, tabs are reset to the defaults for that terminal type. [Tru64 UNIX] When you use the tabs command, always consider the leftmost column number to be 1, even if your terminal refers to it as 0 (zero). Tab-stop position n means that tabbing to position n causes the next character output to be in the n+1th column position on that line. Predefined Tab Flags [Tru64 UNIX] The flags described in the following list provide formats required by most structured programming languages. Some of these flags require that a particular format line be present in the file being manipulated. This is indicated in the list. Sets the tabs to 1, 10, 16, 36, and 72. Sets the tabs to 1, 10, 16, 40, and 72. Sets the tabs to 1, 8, 12, 16, 20, and 55 (COBOL normal format) Sets the tabs to 1, 6, 10, 14, and 49 (COBOL compact format, columns 1 to 6 omitted). With this code, the first column position corresponds to card col- umn 7. One space gets you to column 8, and a tab reaches column 12. Files using this code must include the following format specifica- tion: <:t-c2 m6 s66 d:> [Tru64 UNIX] See Format Specifications later in this reference page. Sets the tabs to 1, 6, 10, 14, 18, 22, 26, 30, 34, 38, 42, 46, 50, 54, 58, 62, and 67 (COBOL compact format with more tabs than -c2). This is the recommended format for COBOL. Files using this code must include the following format specification: <:t-c3 m6 s66 d:> Sets the tabs to 1, 7, 11, 15, 19, and 23 (FORTRAN). Sets the tabs to 1, 5, 9, 13, 17, 21, 25, 29, 33, 37, 41, 45, 49, 53, 57, and 61 (PL/I). Sets the tabs to 1, 10, and 55 (SNOBOL). Sets the tabs to 1, 12, 20, and 44. Format Specifications [Tru64 UNIX] A format specification consists of a sequence of arguments separated by blanks and enclosed in brackets and colons: <: :>. Each argument consists of a keyletter and an optional value which immediately follows it. The following arguments can be used: [Tru64 UNIX] Specifies tab settings. The value for tabs can be: [Tru64 UNIX] A list of column numbers separated by commas, indicating tab stops at the specified columns. [Tru64 UNIX] A - (dash) followed by a number n, specifying tabs stops every n columns. [Tru64 UNIX] A preset tab specification, for example -a2. [Tru64 UNIX] Specifies a maximum line size, or length. The size specification must be an integer. (The value of size is checked after tabs have been expanded but before the margin is prepended.) [Tru64 UNIX] Specifies a number of spa- ces to be inserted at the beginning of each line. The margin specification must be an integer. [Tru64 UNIX] Indicates that the line con- taining the format specification is to be deleted from the converted file. [Tru64 UNIX] If a format specification can be disguised as a comment, for example * <:t5,10,15 s75 m5:> *, you do not need to include the d keyletter. [Tru64 UNIX] Indicates that the current format should prevail only until another format specification is encountered in the file. [Tru64 UNIX] Default values of t-8 and m0 are assumed if t and m arguments are not included in the specification; if s is not included, line size is not checked. If the first line of a file does not contain a format specification, these defaults are assumed for the entire file. NOTES
The tabs command assumes that standard output is the terminal. If standard output is redirected, the results are unpredicable. Full oper- ation of all capabilities may be restricted by the hardware. EXIT STATUS
The following exit values are returned: Successful completion. An error occurred. EXAMPLES
To set tabs every four spaces, enter: tabs -4 To clear all tabs, enter: tabs ENVIRONMENT VARIABLES
The following environment variables affect the execution of tabs: Provides a default value for the internationalization variables that are unset or null. If LANG is unset or null, the corresponding value from the default locale is used. If any of the internationalization vari- ables contain an invalid setting, the utility behaves as if none of the variables had been defined. If set to a non-empty string value, overrides the values of all the other internationalization variables. Determines the locale for the interpretation of sequences of bytes of text data as characters (for example, single-byte as opposed to multi-byte characters in arguments). Determines the locale for the for- mat and contents of diagnostic messages written to standard error. Determines the location of message catalogues for the processing of LC_MESSAGES. Determines the terminal type if the -T option is not used. SEE ALSO
Commands: expand(1), nroff(1), stty(1), tset(1) Standards: standards(5) tabs(1)
All times are GMT -4. The time now is 08:35 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy