head / tail combination returns multiple rows


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting head / tail combination returns multiple rows
# 1  
Old 12-22-2010
head / tail combination returns multiple rows

Hi,

As part of our project, we need to load historical data for a year before our system is live. We have the data feed files that we need to load. However, I need to make sure that the file structure (number of fields separated by a comma) on the field is same for all the files of the same type. I wrote a shell script that selects specific rows of a all feed files for a particular feed type and counts the number of comma's in the row. At the end - if I have the same number of commas on the selected rows for all files, I am sure that the feed file structure is same.

However, I am facing some issues with my script. In some files, the combination of the head and tail commands are not returning a single row as I expect. It seems that the LF character is missing on these rows and hence “multiple rows” are getting treated as a single row. But, when I open the file in vi editor (or Textpad on Windows or in excel) the row appears to be fine. The rows seem to be multiple rows in vi and hence I am confused why the combination of the head and tail command that I have used is returning multiple rows as a single row?

I am using the following command to count the number of commas in a row (3rd row) in the file:
r3=`head -3 $file | tail -1 | tr -dc ',' | wc -c`

What complicates this scenario is that this problem is not present for all rows on all feed files. Any help will be greatly appreciated.

Thanks,
Raj
# 2  
Old 12-22-2010
A bit more code but it works fine assuming you have valid lines of data to feed it

Code:
 
cat x.data
1,2,3
1,2,5
 
cat x1.data
1,2,2
1,2
 
 
cat xxx.ksh
=========
#!/bin/ksh
TEMPFILE=/tmp/junk.out
for file in x.data x1.data
do
awk -F"," '{print NF-1}' $file | sort -u > $TEMPFILE
num_of_matches=`wc -l <$TEMPFILE`
if [ "$num_of_matches" -gt 1 ]
then
        echo "$file columns don't match"
else
        echo "$file columns  match"
fi
done

Login or Register to Ask a Question

Previous Thread | Next Thread

9 More Discussions You Might Find Interesting

1. Homework & Coursework Questions

How to display certain line of file only using head or tail in 1 command?

First month learning about the Linux terminal and it has been a challenge yet fun so far. We're learning by using a gameshell. I'm trying to display a certain line ( only allowed 1 command ) from a file only using the head or tail. I'm pretty about this answer: head -23 history.txt | tail -1... (1 Reply)
Discussion started by: forzatekk
1 Replies

2. UNIX for Dummies Questions & Answers

What should be precedence of using awk, sed, head and tail in UNIX?

Hi All, I am new to unix. In this forum some days back, I have read something like below: 1) Do not use perl if awk can do your work. 2) Do not use awk if sed can do your work. . . . I do not re-collect the whole thing. I think it is good to know the precedence of using these... (2 Replies)
Discussion started by: Prathmesh
2 Replies

3. Homework & Coursework Questions

Head Tail Problem

Use and complete the template provided. The entire template must be completed. If you don't, your post may be deleted! 1. The problem statement, all variables and given/known data: view the 7th line of the program xxx.sh 2. Relevant commands, code, scripts, algorithms: head command tail... (10 Replies)
Discussion started by: hbell221
10 Replies

4. UNIX for Dummies Questions & Answers

head\tail how to display middle lines

hay i need to display middle line: 1 2 3 4 5 how can i display 3-4? (6 Replies)
Discussion started by: margan_ron
6 Replies

5. Shell Programming and Scripting

Averaging in increments using awk & head/tail

Hi, I only have a very limited understanding and experience with writing code and I was hoping I could get some help. I have a dataset of two columns (txt format, numbers in each row separated by a tab) Eg. 1 5 2 5 3 6 4 7 5 6 6 6 7 ... (5 Replies)
Discussion started by: Emred_Skye
5 Replies

6. Shell Programming and Scripting

Imitate head and tail command script

Hi, I have been given assignment of 30 scripts out of which I was able to solve many, I need help with few out of which one asks to imitate head and tail command of unix without using the head and tail commands. Problem is stated below: Write an interactive shell script to imitate the head... (5 Replies)
Discussion started by: nutalk
5 Replies

7. Shell Programming and Scripting

Head and Tail in One Line

I am new to UNIX......I have one file which contains thousnads of records with header and tailer. Header Record 1 Record 2 .... .... Last Record Trailer I want to concatenate Header and Trailer in the first line....now the output should look like this: Header: Header value, Trailer:... (2 Replies)
Discussion started by: 33junaid
2 Replies

8. UNIX for Dummies Questions & Answers

head & tail

I've a major file which includes other files and now I wanna 'cut' the file in several minor parts....like .... find / -name "*.tmp" >filea wc -l filea >fileb sed -e '1s/ filea//' fileb >filec AMOUNT=`cat filec` if ; then cat file a |head -100l (ell) |tail -100l >filec cat file a |head... (6 Replies)
Discussion started by: svennie
6 Replies

9. Shell Programming and Scripting

Implementing MORE,HEAD & TAIL

hai in my shell script i want to replace the following commands 1) more 2) head 3) tail i want to try all type of possible options avaliabul in the above commands please help in implementing those commands (9 Replies)
Discussion started by: g_s_r_c
9 Replies
Login or Register to Ask a Question