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
# 22  
Old 10-27-2010
Quote:
Originally Posted by Scrutinizer
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 "$@" ?
I am not able to write it into command line... In the middle of statement it just start from the beginning... I tried to rewrite it mannualy but it was same...


Well, i finnaly write it there, but nothing happens... I must press ctrl+c...



---------- Post updated at 09:47 PM ---------- Previous update was at 09:33 PM ----------




ok, when i write it into cmd line, the normal output goes out...


---------- Post updated 10-27-10 at 11:59 AM ---------- Previous update was 10-26-10 at 09:47 PM ----------



Well, i don't find any error in statement... What could be easier? To set whole awk command as a variable and in that case should awk print the line number, length of line and line, or to write whole output in awk like you posted before?

Last edited by 1tempus1; 10-26-2010 at 06:41 PM..
# 23  
Old 10-27-2010
I would take a look at test statements [ .. ] in your shell script. Probably you left out a quote or forgot to put spaces around the [ and ] or around the = .
This User Gave Thanks to Scrutinizer For This Post:
# 24  
Old 10-27-2010
I think, that simplier is to write it with awk...
But i have another problem with it... I need to fix arguments incoming to the script. The argument can't be empty, non exist, it must be text file... My suggestion is:
Code:
function print_help ()
{
        echo "[-h]: print help"
}

if [ $1 = -h ]; then
    print_help
    exit 0
fi

if [ ! -e $@ ]; then
        echo "Error: $@ doesn't exist" >/dev/stderr
        exit 1
fi

if [ ! -s $@ ]; then
        echo "Error: $@ is empty" >/dev/stderr
        exit 1
fi

if [ -d $@ ]; then
        echo "Error: $@ is directory" >/dev/stderr
        exit 1
fi

if [ -f $@ ]; then
        find $@ -type -f -exec file {} \; | grep "text"
        echo "Error: $@ not text file" >/dev/stderr
        exit 1
fi

But i have awk code after that and no argument get to him... How should i fix it?


---------- Post updated at 01:09 PM ---------- Previous update was at 01:07 PM ----------



Second throught is :
Code:
while [ 0 -lt $# ]; do
        if [ $1 = -h ]; then
                print_help
                exit 0
        fi
        if [ ! -e $@ ]; then
                echo "Error: $@ doesn't exist" >/dev/stderr
                exit 1
        fi
        if [ ! -s $@ ]; then
                echo "Error: $@ empty" >/dev/stderr
                exit 1
        fi
        if [ -d $@ ]; then
                echo "Error: $@ is directory" >/dev/stderr
                exit 1
        fi

        shift
done

But there is same problem... No argument left for awk and therefore awko won't work


---------- Post updated at 03:33 PM ---------- Previous update was at 01:09 PM ----------



There is only one = in code...
Code:
if [ $1 = -h ]; then

Should i use -eq instead? and what above that testing of the files incoming to my script, can you help me with that?


---------- Post updated at 04:33 PM ---------- Previous update was at 03:33 PM ----------



Can some1 give me advice how to deal with this?

Last edited by 1tempus1; 10-27-2010 at 10:21 AM..
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