cat -n and grep


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting cat -n and grep
# 1  
Old 01-09-2010
cat -n and grep

I am not sure if using cat -n is the most efficient way to split a file into multiple files, one file per line in the source file.
I thought using cat -n would make it easy to process the file because it produces an output that numbers each line that I could then grep for with the regex "^ *$i". But, I find it hard to reduce the output to be just the line number shown in $i. I am trying to add spaces after the variable to reduce the output. But that has the effect of producing no output.

Code:
i=6 && cat -n qso | egrep "^ *$i"
     6  vvv vvv vvv km2a km2a de a8dd. r r r tnx fer call kevin. name reggie. your rst is 569. rig is ic738 es running 50 watts. my antenna is a 4 el beam. i live in lansing, michigan. here, the weather is damp, temp is 50 f. been a ham for 10 years. during the day im a brewer. over to you kevin. km2a de a8dd+

i=6 && cat -n qso | egrep "^ *$i " produces nothing.

The file named qso contains multiple lines of text.
My goal is to parse qso and send each line to its own file using the naming convention qso(n) for the individual files. an example of the first two lines of qso follows:

vvv vvv vvv kq2k de w7ghl w7ghl. tnx ricky. ur rst is 456 456 wid qsb. name hr is jimmy. rig here is an icom ic
706ii with 400 watts. im using a 3 el yagi. the qth is boise, idaho. hr wx is a bit overcast, temp is 29 f. i w
ork as a beautician. been licenced since 1953. bk to you. kq2k de w7ghl+kn ^M
vvv vvv vvv a5ln/0 a5ln/0 a5ln/0 de w6os. thanks for the call pam. name jane. ur rst 367 367 with qrm. i live i
n oceanside oceanside, california. i have a ft2000 es running 500 watts. ant is g5rv. wx here is nice. ive been
a ham since 1907. i work hr as a policeman. back to you pam, 73 es cu agn. a5ln/0 de w6os *^M


My failed attempt to begin making a regex to parse follows:
i=1 && cat -n qso | egrep "^ *$i "

any time I add a space after $i in the regex, it no longer matches anything.

Last edited by kapu; 01-09-2010 at 04:16 AM..
# 2  
Old 01-09-2010
Code:
awk '{print >NR ".txt"}' qso

# 3  
Old 01-09-2010
The reason
Code:
egrep "^ *$i "

catches nothing is that the space behind $i is in fact a tab character so you would have to grep for that instead of space (use ctrl-v TAB).

To put an individual line in a separate file, you can use:
Code:
i=6;sed -n ${i}p qso > qso$i

rdcwayx has given a good solution for putting each line in a different file.
# 4  
Old 01-09-2010
Quote:
Originally Posted by kapu
My goal is to parse qso and send each line to its own file using the naming convention qso(n) for the individual files.
Code:
awk '{print > FILENAME NR}' qso

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Dummies Questions & Answers

Highlighting specific column in cat/grep

I have a large * delimited text file and need to highlight specific columns on specific lines. The file looks similar to this: ABC*01*00*01*00000 000000 *00000 000000 *35*0*0*0*0*20000*0*0*1*0000*00*4*0*3*0*0*1*0* *35*0000*001*4*1OT2*0148*0*0*0*0*0*0*6A7801B0**TEST1... (1 Reply)
Discussion started by: say170
1 Replies

2. UNIX for Dummies Questions & Answers

Grep or cat The Whole Directory PROBLEMS :(

Hi Guys This is my first post so I am not sure how things go here. I'm sorry if I'm breaking the rule or something. Feel free to correct me about that :) So as I was saying... I'd been trying to grep this folder containing 900,000 txt files but seems no luck. I get either "No such file... (6 Replies)
Discussion started by: Nexeu
6 Replies

3. Shell Programming and Scripting

Incredibly inefficient cat | grep script

Hi there, I have 2 files that I am trying to work on. File 1 contains a reference list of unique subscriber numbers ( 7 million entries in total) File 2 contains a list of the subscriber numbers and their tariff (15 million entries in total). This file is in the production system and... (12 Replies)
Discussion started by: Cludgie
12 Replies

4. Shell Programming and Scripting

Replace cat and grep with <

Hello someone told me to use OS=`awk '{print int($3)}' < /etc/redhat-release` instead of OS=cat /etc/redhat-release | `awk '{print int($3)}'` any idea for the reason ? (5 Replies)
Discussion started by: nimafire
5 Replies

5. UNIX for Dummies Questions & Answers

Grep and cat combined

Hello, i need to search one word (snp1) from many files and copy the content of the columns of this word in new file. example: file 1: SNP BP CHR P snp1 1 3 0.01 snp2 2 2 0.05 . . file 2: SNP BP CHR P snp1 1 3 0.06 snp2 2 2 0.3 output... (6 Replies)
Discussion started by: biopsy
6 Replies

6. Shell Programming and Scripting

Directing cat or grep command in variable

Hi, I still have the problem with directing information from cat or grep to a variable. For instance: XMSG "$(date +%Y_%m_%d)_error_report.txt" "$(cat "$(date +%Y_%m_%d)_error_report.txt")" &Works! The text received by cat is directed to my function. If it is written like this, my... (2 Replies)
Discussion started by: haukee
2 Replies

7. Shell Programming and Scripting

grep or cat using sed

Is there a way using grep or cat a file to create a new file based on whether the first 9 positions of each record is less than 399999999? This is a fixed file format. (3 Replies)
Discussion started by: ski
3 Replies

8. Shell Programming and Scripting

cat /etc/passwd and grep -v on /etc/shells

Hi All, I'd like to do this cat /etc/passwd and grep -v on the /etc/shells list I'd like to find all shell that doesn't exist on the /etc/passwd. Is there an easy way without doing a egrep -v "/bin/sh|/bin/bash................"? How do I use a file /etc/shells as my list for... (4 Replies)
Discussion started by: itik
4 Replies

9. UNIX for Advanced & Expert Users

cat and grep not working

I am trying to cat a file and then grep that file for a number. I can do it fine on other files but this particular file will not do anything. I tried running it on an older file from the same device but it is just not working. The file is nothing more than a flat file on a unix box. Here is just a... (3 Replies)
Discussion started by: jphess
3 Replies

10. UNIX for Dummies Questions & Answers

using cat and grep to display missing records

Gentle Unix users, Can someone tell me how I can use a combination of the cat and grep command to display records that are in FileA but missing in FileB. cat FileA one line at a time and grep to see if it is in fileB. If it is ignore. If line is not in fileB display the line. Thanks in... (4 Replies)
Discussion started by: jxh461
4 Replies
Login or Register to Ask a Question