Sponsored Content
Top Forums Shell Programming and Scripting awk: creating a fixed-width single file from 2 different files Post 302398199 by tamahomekarasu on Wednesday 24th of February 2010 03:30:16 AM
Old 02-24-2010
awk: creating a fixed-width single file from 2 different files

I have to create a single file from three files, Please see below for samples:

day.txt
20090101
20090102

item.txt
123456789101
12345678910209
1234567891

str.txt
1
12
123

output.txt
20090101123456789101 1 0
2009010112345678910209 12 0
200901011234567891 123 0
20090101123456789101 1 0
2009010112345678910209 12 0
200901011234567891 123 0
20090101123456789101 1 0
2009010112345678910209 12 0
200901011234567891 123 0
20090102123456789101 1 0
2009010212345678910209 12 0
200901021234567891 123 0
20090102123456789101 1 0
2009010212345678910209 12 0
200901021234567891 123 0
20090102123456789101 1 0
2009010212345678910209 12 0
200901021234567891 123 0

output should be:
1.Cartesian join of all item stores day
2.Date would occupy characters 1-8.
2.Item would occupy characters 9-28.If the characters are not enough to make 20 characters, pad it with space.
3.Str would occupy character 29-48.If the characters are not enough to make 20 characters, pad it with space.
4.The 49th character of the line would always be zero.

---------- Post updated at 05:30 PM ---------- Previous update was at 05:18 PM ----------

the output file was not diplayed correctly, the white spaces between the fields was truncated to a single space.

Last edited by tamahomekarasu; 02-24-2010 at 04:46 AM..
 

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Fixed Width file using AWK

I am using the following command at the Unix prompt to make my 'infile' into a fixed width file of 100 characters. awk '{printf "%-100s\n",$0}' infile > outfile However, there are some records with a special character "©" These records are using 3 characters in place of one and my record... (2 Replies)
Discussion started by: alok.benjwal
2 Replies

2. UNIX Desktop Questions & Answers

Help with Fixed width File Parsing

I am trying to parse a Fixed width file with data as below. I am trying to assign column values from each record to variables. When I parse the data, the spaces in all coumns are dropped. I would like to retain the spaces as part of the dat stored in the variables. Any help is appreciated. I... (4 Replies)
Discussion started by: sate911
4 Replies

3. Shell Programming and Scripting

edit entire column from a fixed-width file using awk or sed

Col1 Col2 Col3 Col4 12 Completed 08 0830 12 In Progress 09 0829 11 For F U 07 0828 Considering the file above, how could i replace the third column the most efficient way? The actual file size is almost 1G. I am... (10 Replies)
Discussion started by: tamahomekarasu
10 Replies

4. Shell Programming and Scripting

Fixed Width Join & Pad Sed/Awk Help

I was wondering someone might be able to push me in the right direction, I am writing a script to modify fixed-width spool files, As you can see below the original spool file broke a single line into two for printability sake. I have had been able do the joins using sed, the thing I am... (10 Replies)
Discussion started by: Cho Nagurai
10 Replies

5. Shell Programming and Scripting

Appending string (charachters inside the line) to a fixed width file using awk or sed

Source File: abcdefghijklmnop01qrstuvwxyz abcdefghijklmnop02qrstuvwxyz abcdefghijklmnop03qrstuvwxyz abcdefghijklmnop04qrstuvwxyz abcdefghijklmnop05qrstuvwxyz Whatever characters are in 17-18 on each line of the file, it should be concatenated to the same line at the character number... (6 Replies)
Discussion started by: tamahomekarasu
6 Replies

6. UNIX for Dummies Questions & Answers

Length of a fixed width file

I have a fixed width file of length 53. when is try to get the lengh of the record of that file i get 2 different answers. awk '{print length;exit}' <File_name> The above code gives me length 50. wc -L <File_name> The above code gives me length 53. Please clarify on... (2 Replies)
Discussion started by: Amrutha24
2 Replies

7. Shell Programming and Scripting

Print column details from fixed width file using awk command

hi, i have a fixed width file with multiple columns and need to print data using awk command. i use: awk -F "|" '($5 == BH) {print $1,$2,$3}' <non_AIM target>.txt for a delimiter file. but now i have a fixed width file like below: 7518 8269511BH 20141224951050N8262 11148 8269511BH... (5 Replies)
Discussion started by: kcdg859
5 Replies

8. Shell Programming and Scripting

Replace using awk on fixed width file.

All, I used to use following command to replace specific location in a fixed width file. Recently looks like my command stopped working as intended. We are on AIX unix. awk 'function repl(s,f,t,v) { return substr(s,1,f-1) sprintf("%-*s", t-f+1, v) substr(s,t+1) } NR<=10 {... (3 Replies)
Discussion started by: pinnacle
3 Replies

9. Shell Programming and Scripting

awk issue splitting a fixed-width file containing line feed in data

Hi Forum. I have the following script that splits a large fixed-width file into smaller multiple fixed-width files based on input segment type. The main command in the script is: awk -v search_col_pos=$search_col_pos -v search_str_len=$search_str_len -v segment_type="$segment_type"... (8 Replies)
Discussion started by: pchang
8 Replies

10. Shell Programming and Scripting

Joining fixed width files

Hi All, I need to join fixed width files on a column which is position 1 to 3 and need to have all the records from file1 file1.txt Cu1nullL1L2 Cu2nullL1L2 Cu3nullL1L2 file2.txt Cu1B1B2 Cu3B1B2 output.txt Cu1L1B1L2B2 Cu2L1L2 Cu3L1B1L2B3 I tried but not getting the expected... (12 Replies)
Discussion started by: shash
12 Replies
STRFMON(3P)						     POSIX Programmer's Manual						       STRFMON(3P)

PROLOG
This manual page is part of the POSIX Programmer's Manual. The Linux implementation of this interface may differ (consult the correspond- ing Linux manual page for details of Linux behavior), or the interface may not be implemented on Linux. NAME
strfmon - convert monetary value to a string SYNOPSIS
#include <monetary.h> ssize_t strfmon(char *restrict s, size_t maxsize, const char *restrict format, ...); DESCRIPTION
The strfmon() function shall place characters into the array pointed to by s as controlled by the string pointed to by format. No more than maxsize bytes are placed into the array. The format is a character string, beginning and ending in its initial state, if any, that contains two types of objects: plain characters, which are simply copied to the output stream, and conversion specifications, each of which shall result in the fetching of zero or more arguments which are converted and formatted. The results are undefined if there are insufficient arguments for the format. If the format is exhausted while arguments remain, the excess arguments are simply ignored. The application shall ensure that a conversion specification consists of the following sequence: * A '%' character * Optional flags * Optional field width * Optional left precision * Optional right precision * A required conversion specifier character that determines the conversion to be performed Flags One or more of the following optional flags can be specified to control the conversion: =f An '=' followed by a single character f which is used as the numeric fill character. In order to work with precision or width counts, the fill character shall be a single byte character; if not, the behavior is undefined. The default numeric fill character is the <space>. This flag does not affect field width filling which always uses the <space>. This flag is ignored unless a left precision (see below) is specified. ^ Do not format the currency amount with grouping characters. The default is to insert the grouping characters if defined for the cur- rent locale. + or ( Specify the style of representing positive and negative currency amounts. Only one of '+' or '(' may be specified. If '+' is speci- fied, the locale's equivalent of '+' and '-' are used (for example, in the U.S., the empty string if positive and '-' if negative). If '(' is specified, negative amounts are enclosed within parentheses. If neither flag is specified, the '+' style is used. ! Suppress the currency symbol from the output conversion. - Specify the alignment. If this flag is present the result of the conversion is left-justified (padded to the right) rather than right-justified. This flag shall be ignored unless a field width (see below) is specified. Field Width w A decimal digit string w specifying a minimum field width in bytes in which the result of the conversion is right-justified (or left-justified if the flag '-' is specified). The default is 0. Left Precision #n A '#' followed by a decimal digit string n specifying a maximum number of digits expected to be formatted to the left of the radix character. This option can be used to keep the formatted output from multiple calls to the strfmon() function aligned in the same columns. It can also be used to fill unused positions with a special character as in "$***123.45" . This option causes an amount to be formatted as if it has the number of digits specified by n. If more than n digit positions are required, this conversion specifi- cation is ignored. Digit positions in excess of those actually required are filled with the numeric fill character (see the =f flag above). If grouping has not been suppressed with the '^' flag, and it is defined for the current locale, grouping separators are inserted before the fill characters (if any) are added. Grouping separators are not applied to fill characters even if the fill character is a digit. To ensure alignment, any characters appearing before or after the number in the formatted output such as currency or sign symbols are padded as necessary with <space>s to make their positive and negative formats an equal length. Right Precision .p A period followed by a decimal digit string p specifying the number of digits after the radix character. If the value of the right precision p is 0, no radix character appears. If a right precision is not included, a default specified by the current locale is used. The amount being formatted is rounded to the specified number of digits prior to formatting. Conversion Specifier Characters The conversion specifier characters and their meanings are: i The double argument is formatted according to the locale's international currency format (for example, in the U.S.: USD 1,234.56). If the argument is +-Inf or NaN, the result of the conversion is unspecified. n The double argument is formatted according to the locale's national currency format (for example, in the U.S.: $1,234.56). If the argument is +-Inf or NaN, the result of the conversion is unspecified. % Convert to a '%' ; no argument is converted. The entire conversion specification shall be %% . Locale Information The LC_MONETARY category of the program's locale affects the behavior of this function including the monetary radix character (which may be different from the numeric radix character affected by the LC_NUMERIC category), the grouping separator, the currency symbols, and formats. The international currency symbol should be conformant with the ISO 4217:1995 standard. If the value of maxsize is greater than {SSIZE_MAX}, the result is implementation-defined. RETURN VALUE
If the total number of resulting bytes including the terminating null byte is not more than maxsize, strfmon() shall return the number of bytes placed into the array pointed to by s, not including the terminating null byte. Otherwise, -1 shall be returned, the contents of the array are unspecified, and errno shall be set to indicate the error. ERRORS
The strfmon() function shall fail if: E2BIG Conversion stopped due to lack of space in the buffer. The following sections are informative. EXAMPLES
Given a locale for the U.S. and the values 123.45, -123.45, and 3456.781, the following output might be produced. Square brackets ( "[]" ) are used in this example to delimit the output. %n [$123.45] Default formatting [-$123.45] [$3,456.78] %11n [ $123.45] Right align within an 11-character field [ -$123.45] [ $3,456.78] %#5n [ $ 123.45] Aligned columns for values up to 99999 [-$ 123.45] [ $ 3,456.78] %=*#5n [ $***123.45] Specify a fill character [-$***123.45] [ $*3,456.78] %=0#5n [ $000123.45] Fill characters do not use grouping [-$000123.45] even if the fill character is a digit [ $03,456.78] %^#5n [ $ 123.45] Disable the grouping separator [-$ 123.45] [ $ 3456.78] %^#5.0n [ $ 123] Round off to whole units [-$ 123] [ $ 3457] %^#5.4n [ $ 123.4500] Increase the precision [-$ 123.4500] [ $ 3456.7810] %(#5n [$ 123.45] Use an alternative pos/neg style [($ 123.45)] [$ 3,456.78] %!(#5n [ 123.45] Disable the currency symbol [( 123.45)] [ 3,456.78] %-14#5.4n [ $ 123.4500 ] Left-justify the output [-$ 123.4500 ] [ $ 3,456.7810 ] %14#5.4n [ $ 123.4500] Corresponding right-justified output [ -$ 123.4500] [ $ 3,456.7810] See also the EXAMPLES section in fprintf(). APPLICATION USAGE
None. RATIONALE
None. FUTURE DIRECTIONS
Lowercase conversion characters are reserved for future standards use and uppercase for implementation-defined use. SEE ALSO
fprintf(), localeconv(), the Base Definitions volume of IEEE Std 1003.1-2001, <monetary.h> COPYRIGHT
Portions of this text are reprinted and reproduced in electronic form from IEEE Std 1003.1, 2003 Edition, Standard for Information Technol- ogy -- Portable Operating System Interface (POSIX), The Open Group Base Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of Electrical and Electronics Engineers, Inc and The Open Group. In the event of any discrepancy between this version and the original IEEE and The Open Group Standard, the original IEEE and The Open Group Standard is the referee document. The original Standard can be obtained online at http://www.opengroup.org/unix/online.html . IEEE
/The Open Group 2003 STRFMON(3P)
All times are GMT -4. The time now is 06:21 PM.
Unix & Linux Forums Content Copyright 1993-2022. All Rights Reserved.
Privacy Policy