10 More Discussions You Might Find Interesting
1. Shell Programming and Scripting
I need to develop a script where I will take two date arguments as parameter date1 and date2 which will in format YYYYMM.
Below is the input file say sample.txt.
sample.txt will have certain blocks starting with P1.
Each block will have a value 118,1:TIMESTAMP.
I need to compare the... (7 Replies)
Discussion started by: garvit184
7 Replies
2. Shell Programming and Scripting
Hi,
I want to replace a chain of if-else statement in an old AWK file with values from Db2 table or CSV file. The part of code is below...
if (start_new_rec=="true"){
exclude_user="false";
user=toupper($6);
match(user, "XXXXX.");
if (RSTART ==2 ) {
... (9 Replies)
Discussion started by: asandy1234
9 Replies
3. Shell Programming and Scripting
Hi gurus..
Am reading a file, counting number of lines and storing it in a variable. Then am passing that variable into If loop for comparision, if the number of lines are greater than 1000 it should split a file if not it should send the file name to archive folder.. but when i execute the... (4 Replies)
Discussion started by: azherkn3
4 Replies
4. Shell Programming and Scripting
I have a file like this,
1,a,saurav
2,b,rout
I want to show this file in a perl cgi page table and want to add a column which will contain a text box. There I will give some manual input, which will be written to the existing file(or a new file) in below format.
1|a|saurav|bangalore... (2 Replies)
Discussion started by: sauravrout
2 Replies
5. Shell Programming and Scripting
i want to run update query for oracle which is in up.sql taking values from a.csv.
I have implemented shell script to do it.
extn="perl"
ls -1 | while read file
do
echo "$file,$extn" > a.csv
done
up.sql contains
update file_list set filename=$1 where extn=$2;
The code to update is... (2 Replies)
Discussion started by: millan
2 Replies
6. Shell Programming and Scripting
I am new to this shell scripting....
I have a file which contains list of users. This files get updated when new user comes into the system.
I want to create script which will give a table containing unique list of users. When I say unique, it means script should match table while parsing... (3 Replies)
Discussion started by: dchavan1901
3 Replies
7. Emergency UNIX and Linux Support
Hi all,
I have written a script which stores data along with requisite dates in a file.
I need to compare the stored date values in the file to obtain the row with the highest date value i.e. the recent most entered record in the file.
Please help cause i dont know how we can compare dates in... (10 Replies)
Discussion started by: sumi_mn
10 Replies
8. Shell Programming and Scripting
Hi
I am having three oracle databases running in three different machine. their ip address is different. from one of the DB am able to access both the databases.(means am able to select values and insert values in to tables individually.)
I need to fetch some data from DB1 table(say DB1 ip is... (2 Replies)
Discussion started by: aemunathan
2 Replies
9. Shell Programming and Scripting
Guys,
I want to insert some values from a log file into a temporary table. the values in the log file looks like this
SV_NAME CC_NAME CP_DISP_RUN_STATE
------- ------------------- -----------------
sble01 ALLTEL WorkMon24Hrs Running
I want to enter the... (2 Replies)
Discussion started by: ragha81
2 Replies
10. UNIX for Dummies Questions & Answers
Hi all
I need to input values in a .csv file into my Oracle table running in Unix, I wonder what would be the command to do so...
The values are recorded in an excel file and I tried using a formatted text file to do so but failed because one of the field is simply too large to fit in the... (5 Replies)
Discussion started by: handynas
5 Replies
Fields(3pm) User Contributed Perl Documentation Fields(3pm)
NAME
Sort::Fields - Sort lines containing delimited fields
SYNOPSIS
use Sort::Fields;
@sorted = fieldsort [3, '2n'], @lines;
@sorted = fieldsort '+', [-1, -3, 0], @lines;
$sort_3_2n = make_fieldsort [3, '2n'], @lines;
@sorted = $sort_3_2n->(@lines);
DESCRIPTION
Sort::Fields provides a general purpose technique for efficiently sorting lists of lines that contain data separated into fields.
Sort::Fields automatically imports two subroutines, "fieldsort" and "make_fieldsort", and two variants, "stable_fieldsort" and "make_sta-
ble_fieldsort". "make_fieldsort" generates a sorting subroutine and returns a reference to it. "fieldsort" is a wrapper for the
"make_fieldsort" subroutine.
The first argument to make_fieldsort is a delimiter string, which is used as a regular expression argument for a "split" operator. The
delimiter string is optional. If it is not supplied, make_fieldsort splits each line using "/s+/".
The second argument is an array reference containing one or more field specifiers. The specifiers indicate what fields in the strings will
be used to sort the data. The specifier "1" indicates the first field, "2" indicates the second, and so on. A negative specifier like
"-2" means to sort on the second field in reverse (descending) order. To indicate a numeric rather than alphabetic comparison, append "n"
to the specifier. A specifier of "0" means the entire string ("-0" means the entire string, in reverse order).
The order in which the specifiers appear is the order in which they will be used to sort the data. The primary key is first, the secondary
key is second, and so on.
"fieldsort [1, 2], @data" is roughly equivalent to "make_fieldsort([1, 2])->(@data)". Avoid calling fieldsort repeatedly with the same
sort specifiers. If you need to use a particular sort more than once, it is more efficient to call "make_fieldsort" once and reuse the
subroutine it returns.
"stable_fieldsort" and "make_stable_fieldsort" are like their "unstable" counterparts, except that the items that compare the same are
maintained in their original order.
EXAMPLES
Some sample data (in array @data):
123 asd 1.22 asdd
32 ewq 2.32 asdd
43 rewq 2.12 ewet
51 erwt 34.2 ewet
23 erww 4.21 ewet
91 fdgs 3.43 ewet
123 refs 3.22 asdd
123 refs 4.32 asdd
# alpha sort on column 1
print fieldsort [1], @data;
123 asd 1.22 asdd
123 refs 3.22 asdd
123 refs 4.32 asdd
23 erww 4.21 ewet
32 ewq 2.32 asdd
43 rewq 2.12 ewet
51 erwt 34.2 ewet
91 fdgs 3.43 ewet
# numeric sort on column 1
print fieldsort ['1n'], @data;
23 erww 4.21 ewet
32 ewq 2.32 asdd
43 rewq 2.12 ewet
51 erwt 34.2 ewet
91 fdgs 3.43 ewet
123 asd 1.22 asdd
123 refs 3.22 asdd
123 refs 4.32 asdd
# reverse numeric sort on column 1
print fieldsort ['-1n'], @data;
123 asd 1.22 asdd
123 refs 3.22 asdd
123 refs 4.32 asdd
91 fdgs 3.43 ewet
51 erwt 34.2 ewet
43 rewq 2.12 ewet
32 ewq 2.32 asdd
23 erww 4.21 ewet
# alpha sort on column 2, then alpha on entire line
print fieldsort [2, 0], @data;
123 asd 1.22 asdd
51 erwt 34.2 ewet
23 erww 4.21 ewet
32 ewq 2.32 asdd
91 fdgs 3.43 ewet
123 refs 3.22 asdd
123 refs 4.32 asdd
43 rewq 2.12 ewet
# alpha sort on column 4, then numeric on column 1, then reverse
# numeric on column 3
print fieldsort [4, '1n', '-3n'], @data;
32 ewq 2.32 asdd
123 refs 4.32 asdd
123 refs 3.22 asdd
123 asd 1.22 asdd
23 erww 4.21 ewet
43 rewq 2.12 ewet
51 erwt 34.2 ewet
91 fdgs 3.43 ewet
# now, splitting on either literal period or whitespace
# sort numeric on column 4 (fractional part of decimals) then
# numeric on column 3 (whole part of decimals)
print fieldsort '(?:.|s+)', ['4n', '3n'], @data;
51 erwt 34.2 ewet
43 rewq 2.12 ewet
23 erww 4.21 ewet
123 asd 1.22 asdd
123 refs 3.22 asdd
32 ewq 2.32 asdd
123 refs 4.32 asdd
91 fdgs 3.43 ewet
# alpha sort on column 4, then numeric on the entire line
# NOTE: produces warnings under -w
print fieldsort [4, '0n'], @data;
32 ewq 2.32 asdd
123 asd 1.22 asdd
123 refs 3.22 asdd
123 refs 4.32 asdd
23 erww 4.21 ewet
43 rewq 2.12 ewet
51 erwt 34.2 ewet
91 fdgs 3.43 ewet
# stable alpha sort on column 4 (maintains original relative order
# among items that compare the same)
print stable_fieldsort [4], @data;
123 asd 1.22 asdd
32 ewq 2.32 asdd
123 refs 3.22 asdd
123 refs 4.32 asdd
43 rewq 2.12 ewet
51 erwt 34.2 ewet
23 erww 4.21 ewet
91 fdgs 3.43 ewet
BUGS
Some rudimentary tests now.
Perhaps something should be done to catch things like:
fieldsort '.', [1, 2], @lines;
'.' translates to "split /./" -- probably not what you want.
Passing blank lines and/or lines containing the wrong kind of data (alphas instead of numbers) can result in copious warning messages under
"-w".
If the regexp contains memory parentheses ("(...)" rather than "(?:...)"), split will function in "delimiter retention" mode, capturing the
contents of the parentheses as well as the stuff between the delimiters. I could imagine how this could be useful, but on the other hand I
could also imagine how it could be confusing if encountered unexpectedly. Caveat sortor.
Not really a bug, but if you are planning to sort a large text file, consider using sort(1). Unless, of course, your operating system
doesn't have sort(1).
AUTHOR
Joseph N. Hall, joseph@5sigma.com
SEE ALSO
perl(1).
perl v5.8.8 2008-03-25 Fields(3pm)