Bash script find longest line/lines in several files


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Bash script find longest line/lines in several files
# 15  
Old 10-26-2010
Quote:
Originally Posted by 1tempus1
That code of yours isn't working, i tried to execute script ./script aaa bbb ccc...
and it didn't read stdin, just error message showed...
Of course it didn't read stdin. You did not provide anything on stdin. You would need for example a pipe to do that, like I did with the cat example.
And what code did you use? The one in https://www.unix.com/302466294-post9.html ? What error message did you get?
This User Gave Thanks to Scrutinizer For This Post:
# 16  
Old 10-26-2010
Quote:
Originally Posted by 1tempus1
Well, i just finish testing... Awk is now good but it put all the lines into variable... So if i have 3 longest lines with same length, awk save all three to riadok... So it is not very good. But if awk find all longest lines from every file on input, how can i find the longest from the longest?



---------- Post updated at 11:14 AM ---------- Previous update was at 11:01 AM ----------




That code of yours isn't working, i tried to execute script ./script aaa bbb ccc...
and it didn't read stdin, just error message showed...



---------- Post updated at 11:34 AM ---------- Previous update was at 11:14 AM ----------




Code:
awk 'length==L{r=r RS L FS ""$0""} length > L{L=length; r=L FS ""$0""}END{ print r}' "$i"

I need to get output from this to the variable riadok. It works, when i've got files with only one the longest line in each file. But when it is more than that in single file, it put all lines into single variable. How can i fix this? I tried these options:
Code:
awk 'length==L{r=r RS L FS ""$0""} length > L{L=length; r=L FS ""$0""}END{ print r; riadok=r}' test001

Code:
awk 'length==L{r=r RS L FS ""$0""} length > L{L=length; r=L FS ""$0""}END{ print r; riadok=r; pole=("${pole[@]}" "$riadok")}' test001

But it doesn't work at all. Everytime it put all lines into single variable.
well, that error message was cant open file.... My fault... That automatic test provide som stdin and test it... But i wonder, how can i fix that awk, because if it is not possible, i must rewrite all this script and make it without awk. Probably it could be possible to do when i write a length of line to the line a sort it... I must chcecked it.



---------- Post updated at 07:48 PM ---------- Previous update was at 11:51 AM ----------




Ok, i finally get it... Well, i am really dumbass... I am sorry for all... My script is almost finished, i only must finish errors. So thank you, you saved my life...



---------- Post updated at 08:12 PM ---------- Previous update was at 07:48 PM ----------




Well, one problem has appeared. My kode is:
Code:
awk 'length==L{riadok=riadok RS L FS ""$0""} length > L{L=length; riadok=L FS ""$0""}END{ print riadok}' "$@"

it is in script. It will echo the number of characters from the longest line, but i need to print a number of line in file, and whole input should have a form:
Output: '<file>: <number of line> <length of line> <line>'

How can i make it without rewriting whole code?
it actually does the "length of line> <line>" But i need to force it have output in that form... Please help. I have tried to echo
Code:
"Output: '$@: '" and awk -F, '{if($2=="") print NR}'

should give numbers to lines. But how to make it at once?
# 17  
Old 10-26-2010
You can use FILENAME and FNR for that:
Code:
awk 'length>=L{riadok=(length==L?riadok RS:x) "Output: " FILENAME FS FNR FS length FS $0} length > L{L=length}END{ print riadok}' "$@"

This User Gave Thanks to Scrutinizer For This Post:
# 18  
Old 10-26-2010
It is working just nice... It now write all information i need... Except one... I need before that and after a '... How can i do that? Nearly our i tried " ' ` and nothing works... If you know how to do this, this is my last comment here...
# 19  
Old 10-26-2010
You mean like this:
Code:
awk 'length>=L{riadok=(length==L?riadok RS:x) "Output: " q FILENAME ":" FS FNR FS length FS $0 q} length > L{L=length}END{ print riadok}' q="'" "$@"

This User Gave Thanks to Scrutinizer For This Post:
# 20  
Old 10-26-2010
Quote:
Originally Posted by Scrutinizer
You mean like this:
Code:
awk 'length>=L{riadok=(length==L?riadok RS:x) "Output: " q FILENAME ":" FS FNR FS length FS $0 q} length > L{L=length}END{ print riadok}' q="'" "$@"

Looks like good idea but it show error message:
[: =: unary operator expected
# 21  
Old 10-26-2010
That message should be coming from elsewhere in your script (a [ ] test ). What happens if you run the awk statement on the command line without the "$@" ?
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Script using awk to find and replace a line, how to ignore comment lines

Hello, I have some code that works more or less. This is called by a make file to adjust some hard-coded definitions in the src code. The script generated some values by looking at some of the src files and then writes those values to specific locations in other files. The awk code is used to... (3 Replies)
Discussion started by: LMHmedchem
3 Replies

2. Shell Programming and Scripting

Bash: copying lines with specific character to files with same name as copied line.

I am trying to make my script as simple as a possible but, I am not sure if the way I am approaching is necessarily the most efficient or effective it can be. What I am mainly trying to fix is a for loop to remove a string from the specified files and within this loop I am trying to copy the lines... (2 Replies)
Discussion started by: Allie_gastrator
2 Replies

3. UNIX for Advanced & Expert Users

How to find a string in a line in UNIX file and delete that line and previous 3 lines ?

Hi , i have a file with data as below.This is same file. But actual file contains to many rows. i want to search for a string "Field 039 00" and delete that line and previous 3 lines in that file.. Can some body suggested me how can i do using either sed or awk command ? Field 004... (7 Replies)
Discussion started by: vadlamudy
7 Replies

4. Shell Programming and Scripting

Shell Script to find common lines and replace next line

I want to find common line in two files and replace the next line of first file with the next line of second file. (sed,awk,perl,bash any solution is welcomed ) Case Ignored. Multiple Occurrence of same line. File 1: hgacdavd sndm,ACNMSDC msgid "Rome" msgstr "" kgcksdcgfkdsb... (4 Replies)
Discussion started by: madira
4 Replies

5. Shell Programming and Scripting

wc -L giving incorrect length of longest line

Running below line gives 3957 as length of longest line in file 20121119_SRMNotes_init.dat awk ' { if ( length > 3950 ) { x = length } }END{ print x }' 20121119_SRMNotes_init.dat While wc -L 20121119_SRMNotes_init.dat gives output as 4329. Why is there a difference between these two commands.... (2 Replies)
Discussion started by: Satish Mantha
2 Replies

6. Shell Programming and Scripting

Bash script to find the number of files and identify which ones are 0 bytes.

I am writing a bash script to find out all the files in a directory which are empty. I am running into multiple issues. I will really appreciate if someone can please help me. #!/bin/bash DATE=$(date +%m%d%y) TIME=$(date +%H%M) DIR="/home/statsetl/input/civil/test" ... (1 Reply)
Discussion started by: monasharma13
1 Replies

7. Shell Programming and Scripting

Find longest string and print it

Hello all, I need to find the longest string in a select field and print that field. I have tried a few different methods and I always end up one step from where I need to be. Methods thus far: nawk '{if (length($1) > long) long=length($1); if(length($1)==long) print $1}' The above... (6 Replies)
Discussion started by: SEinT
6 Replies

8. Shell Programming and Scripting

Finding longest line in a Record

Good Morning/Afternoon All, I am using the nawk utility in korn shell to find the longest field and display that result. My Data is as follows: The cat ran The elephant ran Milly ran too We all ran I have tried nawk '{ if (length($1) > len) len=length($1); print $1}' filename The... (5 Replies)
Discussion started by: SEinT
5 Replies

9. Shell Programming and Scripting

Shell script to find longest phrase

Hi Everyone, I am trying to write a shell script that can find the longest phrase that appears at least twice in an online news article. The HTML has been parsed through an HTML parser, converted to XML and the article content extracted. I have put this article content in a text file to work... (24 Replies)
Discussion started by: stargazerr
24 Replies

10. Shell Programming and Scripting

Find the length of the longest line

Dear All, To find the length of the longest line from a file i have used wc -L which is giving the proper output... But the problem is AIX os does not support wc -L command. so is there any other way 2 to find out the length of the longest line using awk or sed ? Regards, Pankaj (1 Reply)
Discussion started by: panknil
1 Replies
Login or Register to Ask a Question