Joining lines from two files - please help


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting Joining lines from two files - please help
# 8  
Old 07-24-2006
I would change the loop and use the "find" command but this complicates the inner parts of the query a little.
Code:
# Define your target directories
YOUR_ROOT_DIR=/your/first/path/
YOUR_MIRROR_DIR=/your/second/path/

printf "%-40s %-15s %-15s %-15s\n" "File" "Size Location 1" "Size Location 2" "Difference"
print "========================================" "===============" "===============" "==============="

# Recurse through "YOUR_ROOT_DIR" and find files and their sizes
for i in $(find ${YOUR_ROOT_DIR} -name \* -ls | nawk '$3 !~ /d.*/ {print $7, $11}')
do
    # Strip file size and "YOUR_ROOT_DIR" from find + awk output
    FILE_BASE=${i##+([0-9       ])${YOUR_ROOT_DIR}}

    # Get file size from YOUR_ROOT_DIR
    FILE_SIZE_1=${i%%+([        ]*)}

    # Fetch file size from YOUR_MIRROR_DIR
    FILE_SIZE_2=$(ls -l ${YOUR_MIRROR_DIR}${FILE_BASE} | nawk '{print $5}')

    # Output the results
    printf "%-40s %15d %15d %15d\n" "${FILE_BASE}" "$FILE_SIZE_1" "$FILE_SIZE_2" "$(( FILE_SIZE_1 - FILE_SIZE_2 ))"
done

# 9  
Old 07-24-2006
I am getting two kinds of errors while running it. In the lowest idrectory, even for the file it is looking for '/' in the end.

ls: /home/rpmuser/COB_bw_5.3.2/home/rpmuser/COB_bw_5.3.0/5.3/admin-plugins/BWAdmin.war: No such file or directory

./filesize2.sh[23]: /home/rpmuser/COB_bw_5.3.0/5.3/admin-plugins/BWAdmin.war: unexpected `/'

In the script,
/home/rpmuser/COB_bw_5.3.2 YOUR_ROOT_DIR
/home/rpmuser/COB_bw_5.3.0 YOUR_MIRROR_DIR

Please...
# 10  
Old 07-24-2006
Let's try again:
Code:
# Define your target directories
YOUR_ROOT_DIR=/home/rpmuser/COB_bw_5.3.2
YOUR_MIRROR_DIR=/home/rpmuser/COB_bw_5.3.0

printf "%-40s %-15s %-15s %-15s\n" "File" "Size Location 1" "Size Location 2" "Difference"
print "========================================" "===============" "===============" "==============="

# Recurse through "YOUR_ROOT_DIR" and find files and their sizes
for i in $(find ${YOUR_ROOT_DIR} -name \* -ls | nawk '$3 !~ /d.*/ {print $7 ":" $11}')
do
    # Strip file size and "YOUR_ROOT_DIR" from find + awk output
    FILE_BASE=${i##*:${YOUR_ROOT_DIR}/}
    # Get file size from YOUR_ROOT_DIR

    FILE_SIZE_1=${i%%:*)}

    # Fetch file size from YOUR_MIRROR_DIR
    if [[ -f ${YOUR_MIRROR_DIR}/${FILE_BASE} ]]
    then
        FILE_SIZE_2=$(ls -l ${YOUR_MIRROR_DIR}/${FILE_BASE} | nawk '{print $5}')
        DIFF=$(( FILE_SIZE_1 - FILE_SIZE_2 ))
    else
        FILE_SIZE_2="Not found"
        DIFF="???"
    fi

    # Output the results
    printf "%-40s %15d %15s %15s\n" "${FILE_BASE}" "$FILE_SIZE_1" "$FILE_SIZE_2" "$DIFF"
done

# 11  
Old 07-24-2006
While executing the script - particularly the line -
FILE_SIZE_1=${i%%:*)},
I am getting
6519 6519
/home/rpmuser/COB_bw_5.3.0/5.3/doc/pdg/dg18.htm printf: /home/rpmuser/COB_bw_5.3.0/5.3/doc/pdg/dg18.htm: expected a numeric value

The same message is being shown for
FILE_SIZE_1=${i%%+([ ]*)}

Can you suggest what the issue is ??
# 12  
Old 07-24-2006
Show me the output of this:

find ${YOUR_ROOT_DIR} -name \* -ls | nawk '$3 !~ /d.*/ {print $7 ":" $11}
# 13  
Old 07-24-2006
Without putting it in the for loop and just run it, you get the output:

32674 /home/rpmuser/TIB_bw_5.3/TIB_bw_5.3.0/5.3/doc/bw/html/admin/license.htm
3108 /home/rpmuser/TIB_bw_5.3/TIB_bw_5.3.0/5.3/doc/bw/html/admin/lof.htm
2790 /home/rpmuser/TIB_bw_5.3/TIB_bw_5.3.0/5.3/doc/bw/html/admin/lot.htm
3102 /home/rpmuser/TIB_bw_5.3/TIB_bw_5.3.0/5.3/doc/bw/html/admin/preface.htm
5815 /home/rpmuser/TIB_bw_5.3/TIB_bw_5.3.0/5.3/doc/bw/html/admin/preface2.htm
3457 /home/rpmuser/TIB_bw_5.3/TIB_bw_5.3.0/5.3/doc/bw/html/admin/preface3.htm
2693 /home/rpmuser/TIB_bw_5.3/TIB_bw_5.3.0/5.3/doc/bw/html/admin/title.htm
12551 /home/rpmuser/TIB_bw_5.3/TIB_bw_5.3.0/5.3/doc/bw/html/admin/toc.xml
920 /home/rpmuser/TIB_bw_5.3/TIB_bw_5.3.0/5.3/doc/bw/html/index.htm
67726 /home/rpmuser/TIB_bw_5.3/TIB_bw_5.3.0/5.3/doc/bw/html/license.htm
1034294 /home/rpmuser/TIB_bw_5.3/TIB_bw_5.3.0/5.3/doc/bw/pdf/tib_bw_concepts.pdf
1058579 /home/rpmuser/TIB_bw_5.3/TIB_bw_5.3.0/5.3/doc/bw/pdf/tib_bw_error_codes.pdf
208336 /home/rpmuser/TIB_bw_5.3/TIB_bw_5.3.0/5.3/doc/bw/pdf/tib_bw_quickstart.pdf
2722852 /home/rpmuser/TIB_bw_5.3/TIB_bw_5.3.0/5.3/doc/bw/pdf/tib_bw_process_design_guide.pdf
1233363 /home/rpmuser/TIB_bw_5.3/TIB_bw_5.3.0/5.3/doc/bw/pdf/tib_bw_administration.pdf
192414 /home/rpmuser/TIB_bw_5.3/TIB_bw_5.3.0/5.3/doc/bw/pdf/tib_bw_installation.pdf
4308452 /home/rpmuser/TIB_bw_5.3/TIB_bw_5.3.0/5.3/doc/bw/pdf/tib_bw_palette_reference.pdf
594368 /home/rpmuser/TIB_bw_5.3/TIB_bw_5.3.0/5.3/tib_bw_release_notes.pdf
651241 /home/rpmuser/TIB_bw_5.3/TIB_bw_5.3.0/5.3/_uninst/Tibuninstall.bin


But when I put it in the loop, I get error.
# 14  
Old 07-24-2006
That can't be the output. Each file size must be separated by a colon ":".

read the AWK output: {print $7 ":" $11}

The commands inside the loop are parsed based on the colon character.

Last edited by tmarikle; 07-24-2006 at 06:58 PM..
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Joining broken lines and removing empty lines

Hi - I have req to join broken lines and remove empty lines but should NOT be in one line. It has to be as is line by line. The challenge here is there is no end of line/start of line char. thanks in advance Source:- 2003-04-34024|04-10-2003|Claims|Claim|01-13-2003|Air Bag:Driver;... (7 Replies)
Discussion started by: Jackceasar123
7 Replies

2. Shell Programming and Scripting

Joining lines in different way

Hi all, I'm excited to the part of unix.com forum, and noob to it. I have an query, where I have an file and it contains data like this use thread when posting do no I was expecting the result as use thread thread when when posting posting do do no use thread when thread when... (6 Replies)
Discussion started by: Jose Nirmal
6 Replies

3. Shell Programming and Scripting

Joining broken lines

I have a plain test file with a delimeter ''. In this file some lines are broken into two. The first part of these broken line will have 6 columns and the second part will have 4. These broken lines will be consicutive. I want to join the two consicutive lines which are having 6 fields and 4... (8 Replies)
Discussion started by: ratheeshjulk
8 Replies

4. Shell Programming and Scripting

pattern matching lines using the date, and then joining the lines

Hi Guys, Was trying to attempt the below using awk and sed, have no luck so far, so any help would be appreciated. Current Text File: The first line has got an "\n", and the second line has got spaces/tabs then the word and "\n" TIME SERVER/CLIENT TEXT... (6 Replies)
Discussion started by: eo29
6 Replies

5. Shell Programming and Scripting

Need help joining lines

Hi All, I need the command to join 2 lines into one. I found lots of threads but none give me the sollution. Probably because unix scripting is one of my best features ;) I got a logfile where line 2 needs to be joined with line 1, lines 4 needs to be joined with line 3 etc If you need... (16 Replies)
Discussion started by: rene21976
16 Replies

6. Shell Programming and Scripting

Issue with Joining lines from two files

Hi, I have two text files, that need their data joining/concatenation. 'Paste' works for this. But have an issue when there is mismatch in number of rows in each file. E.g. (main file) File1 - has 20 rows File2 - has 30 rows. Command 'paste file1 file2 > file3' joins all lines. I want the... (4 Replies)
Discussion started by: sharath160
4 Replies

7. Shell Programming and Scripting

joining two lines

Hi , I want to join two lines in a file, where the second line contain query string. if it doesn't contain that string i don't want to join e.g. Input file is as following: name fame game none none none name fame game cat eat mice I need output file as name fame game none none... (2 Replies)
Discussion started by: ashrafonics
2 Replies

8. UNIX for Dummies Questions & Answers

Conditionally joining lines in vi

I've done this before but I can't remember how. Too long away from vi. I want to do a search are replace, but I want the replace to be a join. Example see spot run see spot walk see spot run fast see spot hop %s/run$/<somehow perform a join with the next line>/g so the results... (0 Replies)
Discussion started by: ifermon
0 Replies

9. Shell Programming and Scripting

Joining 3 lines at a time

Hi, I have a file which has the contents as below : 07:38:36 EST date 20041117 07:39:06 EST 07:00:29 EDT date 20050504 07:25:16 EDT 07:00:40 EDT date 20050505 07:23:12 EDT I need to delete the new line character from all lines except 3rd,6th,9th etc. lines so that i get the output... (14 Replies)
Discussion started by: Sabari Nath S
14 Replies

10. Shell Programming and Scripting

Joining 2 lines in a file together

Hi guys, I've got a log file which has entries that look like this: ------------------------------------------------------------------------------- 06/08/04 07:57:57 AMQ9002: Channel program started. EXPLANATION: Channel program 'INSCCPQ1.HSMTSPQ1' started. ACTION: None. ... (3 Replies)
Discussion started by: m223464
3 Replies
Login or Register to Ask a Question