How to skip lines which don't begin with a number


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to skip lines which don't begin with a number
# 1  
Old 01-09-2010
How to skip lines which don't begin with a number

Hi,

I have a file:
file.txt

1 word
2 word
word
word
3 word
4 word

and I would like to create a set:
set number = `cut -d" " -f1 ${1}` #${1} is the text file

but it should only contain the lines which begin with numbers,
and another set which contains the lines which begin with words.

How can I do that?

Thanks,
Shira. Smilie
# 2  
Old 01-09-2010
Code:
awk '$1 ~ /^[0-9]+$/ {print >> "num"; next} {print >> "alpha"}' "$1"

The first "$1" is internal to awk and refers to the first field in the line. The second instance of "$1" is unrelated and is the shell positional parameter containing your file's name.

num=name of output file with numeric first fields
alpha=name of output file with all other lines

Regards,
alister
# 3  
Old 01-09-2010
This might also work for you:

Code:
set number = `cut -d" " -f1 ${1} | grep "[0-9]"`
set word = `cut -d" " -f1 ${1} | grep -v "[0-9]"`

# 4  
Old 01-09-2010
Code:
set number = `awk '/^[0-9]/ {print $1}' ${1}`
set word = `awk '/^[^0-9]/ {print $1}' ${1}`

As you are apparently still learning, my best advice would be to stop using csh! It's truly dreadful.

The consensus here is that there are better ones!
# 5  
Old 01-09-2010
Hi,

thank you all!

2pugs, your message really helped me.
The only thing is that you need to switch between the pipelines.
It should be:
Code:
set number = `grep "[0-9]" ${1}|cut -d" " -f1`
set word = `grep -v "[0-9]" ${1} | cut -d" " -f1`

But now I have a different problem.
When I try to do:
Code:
echo "${number[$i]} ${word[$i]}"

the number is printed okay, but the string returns 0 instead of the word.
(2pugs, it's the same problem as before, but now I can't avoid it by entering the parameter from the standard input, because now this word is from a file. For everyone else who doesn't know what I'm talking about:
https://www.unix.com/shell-programmin...er-string.html)

Thanks,
Shira.
# 6  
Old 01-09-2010
Hi.

The solution as given works fine - if run in isolation. You are obviously doing something else, somewhere that is breaking it.

Please post your script from the point where "number" and "word" are declared up to the point where those values are echo'd.
# 7  
Old 01-09-2010
well,
I use word and number in the main script.
in the main script I have an if->while loop, and then I send ${word[$i]} and ${number[$i]} to the subscript.

like that:
Code:
if () then
bla bla
while ()
bla bla 
subscript ${word[$i]} ${number[$i]}
end
endif

inside the subscript I receive them as
set word = ${1}
set number = ${2}
In the subscript I tried to echo them and they echoed fine.

But inside the subscript there's an IF part.
If I print
echo "word: ${word}"
it works fine.
But if I print
echo "${number} ${word}"
it prints the right number and 0 instead of the word.

---------- Post updated at 04:12 AM ---------- Previous update was at 03:49 AM ----------

OK, I solved it, but it's so STRANGE!!!
what I did was like this:

in the subscript in the IF part, right above the line that prints I reentered the string into word:

Code:
if () then
set word = ${1}
echo "${number} ${word}"
endif

and it works.
But the thing is that I didn't touch the word parameter at all before the echo part.
Can someone explain why this happens?

Thanks,
Shira. Smilie
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

awk to skip lines find text and add text based on number

I am trying to use awk skip each line with a ## or # and check each line after for STB= and if that value in greater than or = to 0.8, then at the end of line the text "STRAND BIAS" is written in else "GOOD". So in the file of 4 entries attached. awk tried: awk NR > "##"' "#" -F"STB="... (6 Replies)
Discussion started by: cmccabe
6 Replies

2. Shell Programming and Scripting

awk - Skip x Number of Lines in Counter

Hello, I am new to AWK and in UNIX in general. I am hoping you can help me out here. Here is my data: root@ubuntu:~# cat circuits.list WORD1 AA BB CC DD Active ISP1 ISP NAME1 XX-XXXXXX1 WORD1 AA BB CC (9 Replies)
Discussion started by: tattoostreet
9 Replies

3. Shell Programming and Scripting

Filter file by length, looking only at lines that don't begin with ">"

I have a file that stores data in pairs of lines, following this format: line 1: header (preceded by ">") line 2: sequence Example.txt: >seq1 name GATTGATGTTTGAGTTTTGGTTTTT >seq2 name TTTTCTTC I want to filter out the sequences and corresponding headers for all sequences that are less... (2 Replies)
Discussion started by: pathunkathunk
2 Replies

4. Homework & Coursework Questions

Music Organizer Script. Don't know where to begin.

I'm having problems with this assignment. I know how to do these basic unix "if" and "then" statements) What I am having trouble with is putting my script together. I started with #!/bin/bash and not sure how to continue. I have to indicate the source and destination folders, and make each a... (2 Replies)
Discussion started by: ulib00n
2 Replies

5. Shell Programming and Scripting

skip lines while reading a file

Hi Experts, I am tryin to read a file and while doing so i need to skip the lines which start with a hash (#) char. I thought of using a goto command but a lot of guys on this site say its not the good way to program. Moreover I am using a ksh shell which deos not support goto command. ... (4 Replies)
Discussion started by: bankimmehta
4 Replies

6. Shell Programming and Scripting

need to create lines from ones that begin with the field separator

Hello, I need to modify an awk script to recognize the last field $NF when the line is split over more than 1 line. In my input file the field separator is the exclamation mark ! so FS="!" So here is my input file infile.txt, it has 2 records, the field separator is in bold: INPUT ... (6 Replies)
Discussion started by: script_op2a
6 Replies

7. UNIX for Dummies Questions & Answers

Extract consecutive lines that begin with a character

Hello, From a sample file below, I would like to extract only consecutive lines that begin with a '$'. How can I do this? $ABC.1 XYGHGHGHHG $ABC.2 RSTUVBWBB $ABC.3 87908787798798 $QRS.5 $RST.6 679707097 $LmN.4 hgkhgh $QRS.5 $ABC.9 Thanks in advance for your help! (6 Replies)
Discussion started by: Gussifinknottle
6 Replies

8. Shell Programming and Scripting

awk - skip x lines and ssh

Im trying to ssh to a remote machine to grep 'x info' *.log and Im able to get the grep output as expected but "after" the policies (1st 14 lines) - I need to skip the first 14 lines. Its SunOS. Plz help??? (1 Reply)
Discussion started by: anthonyraj75
1 Replies

9. Shell Programming and Scripting

How to skip lines in a KSH?

hi, I have a shell script that searches for a particular pattern in all the files inside a directory, and gives the count of that pattern occurences in a file. Now i should not count the pattern if it exists in side a { .... }, as shown below. { ...... ..... .... PATTERN1.......... (1 Reply)
Discussion started by: divak
1 Replies

10. UNIX for Dummies Questions & Answers

skip reading certain lines in a file

How can I exclude reading lines in a file that contains the following: filesystem:/home/pach/liv_patches 128005120 88456640 37270758 71% /home/patches That is, all lines that contain and begins with filesystem: should not be processed/read from a file (5 Replies)
Discussion started by: paulsew
5 Replies
Login or Register to Ask a Question