How Select numbers from a line of text, and remove leading spaces?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How Select numbers from a line of text, and remove leading spaces?
# 1  
Old 08-18-2013
How Select numbers from a line of text, and remove leading spaces?

I have a text file with a line of text that contains numbers and text formatted into groups. I need to extract the number that can be either 1,2 or 3 digits long. Then write it to a variable, but i need to remove any leading spaces in the number first.

I can get the numbers out but how to remove the leading spaces?

My test file contents
Code:
"C 56","Home athletics center","LAC"
"D001","50M Run","50M"
"D003","100M Run","100M"

My Script so far that will pull out the 3 digit number after the first C, and write it to a variable centnum
this is only part of the entire script as the rest will locate only the first line containing the neccessary value

Code:
#!/bin/bash
#set initial variables
file="FILE.EXT"     # input filename

while read line
 do centnum=${line:2:3}                    # find 3 Chars in line
      centnam=$(echo $line | cut -d '"' -f4)    #Extract the Center Name from the file 

done <"$file"
echo D';'$centnum';'$centnam';;M;;' > MM_file.txt

the number in the output file needs to be just the significant digits and is a CSV so can be variable length.

I have tried using sed, but this just parses the entire file at once and I cannot process each line individually.

TIA
Ken
# 2  
Old 08-18-2013
Code:
#!/bin/bash

file="FILE.EXT"

while read line
do
    centnum=${line:2:3}
    centnam=$(echo $line | cut -d '"' -f4)
    echo "D;$(($centnum));$centnam;;M;;"
done <  $file

gives
Code:
D;56;Home athletics center;;M;;
D;1;50M Run;;M;;
D;3;100M Run;;M;;

This User Gave Thanks to fpmurphy For This Post:
# 3  
Old 08-18-2013
Code:
awk -F "[^0-9]*" '{print $2,$3,$4}'
56
001 50 50
003 100 100

This User Gave Thanks to Jotne For This Post:
# 4  
Old 08-18-2013
Thanks and that almost works. I get the 1, 2 or 3 numbers as desired but when I write them out to a resulting file using this line, I now get a space after the numbers.
Code:
echo D';'$centnum';'$centnam';;M;;' > MM_file.txt

Code:
D;156 ;Home athletics center;;M;;

# 5  
Old 08-18-2013
You could also try something like:
Code:
#!/bin/bash
#set initial variables
file="FILE.EXT"     # input filename

while IFS='"' read -r x cn x centnam x
do      cn=${cn##*[!1-9]} # strip off leading non-digits and zeros.
        centnum=${cn:-0} # Add a zero if the input had no non-zero digits.
        printf "D;%s;%s;;M;;\n" "$centnum" "$centnam" 
done < "$file" > MM_file.txt

This does all of the processing using shell built-ins (no need to invoke cut or awk) and will work even if $centnam expands to a string containing multiple adjacent whitespace characters.
# 6  
Old 08-18-2013
Hi Don.. Interesting idea but The 2 variables will be written from data withing the text file, Specifically the first line.
Suppose some more context might help, but i was trying to keep it simple :-).

I will have many files to process and all are the same format, and I will need to extract this line out, and then read the Center Number and name, then write them out to another file.

Another part of the script will read the input file and this part only needs to extract the Number and name from this line. The number wil be any number between 1 and 999, and the leading zero is the problem.

Ken
# 7  
Old 08-18-2013
Quote:
Originally Posted by kcpoole
Hi Don.. Interesting idea but The 2 variables will be written from data withing the text file, Specifically the first line.
Suppose some more context might help, but i was trying to keep it simple :-).

I will have many files to process and all are the same format, and I will need to extract this line out, and then read the Center Number and name, then write them out to another file.

Another part of the script will read the input file and this part only needs to extract the Number and name from this line. The number wil be any number between 1 and 999, and the leading zero is the problem.

Ken
Your script writes:
Code:
D;003;100M Run;;M;;

into the file MM_file.txt from the last (not first) line of your input file FILE.EXT which you said contains:
Code:
"C 56","Home athletics center","LAC"
"D001","50M Run","50M"
"D003","100M Run","100M"

At various times you have said that the leading zeros are a problem and that the leading space is a problem. You have not shown us what output you want to be produced. My script processed each line in your input file, stripping off leading spaces and leading zeros and putting:
Code:
D;56;Home athletics center;;M;;
D;1;50M Run;;M;;
D;3;100M Run;;M;;

in MM_file.txtwhich is one line of output for each line of input. If this is not what you want, please explain clearly what output you do want in English and show us the output you want to have produced with the sample input file you provided. (Note that I see no way to get the output you showed in message #4 in this thread:
Code:
D;156 ;Home athletics center;;M;;

since 156 does not appear as a number on any of your sample input lines???)
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Tip to remove line endings and spaces on a pre-formatted text file?

Hi, At the moment, using Notepad++ to do a search and replace, manually section by section which is real painful. Yeah, so copying each section of the line of text and putting into a file and then search and replace, need at least 3-operations in Notepad++. Here's hoping I will be able to... (1 Reply)
Discussion started by: newbie_01
1 Replies

2. Shell Programming and Scripting

How to remove leading and trailing spaces for variable in shell script?

Hi I have variable named tablename. The value to tablename variable has leading and trailing white spaces. How to remove the leading and training white spaces and write the value of the tablename without space to a file using shell script. ( for e.g. tablename= yyy ) INPUT ... (10 Replies)
Discussion started by: pottic
10 Replies

3. Shell Programming and Scripting

Trying to remove leading spaces

OS : RHEL 6.7 Shell : bash I am trying to remove the leading the spaces in the below file $ cat pattern2.txt hello1 hello2 hello3 hello4 Expected output is shown below. $ cat pattern2.txt hello1 hello2 hello3 hello4 (2 Replies)
Discussion started by: John K
2 Replies

4. Shell Programming and Scripting

Remove leading and trailing spaces from a file

Hi, I am trying to remove leading and trailing spaces from a file using awk but somehow I have not been able to do it. Here is the data that I want to trim. 07/12/2017 15:55:00 |entinfdev |AD ping Time ms | .474| 1.41| .581|green |flat... (9 Replies)
Discussion started by: svajhala
9 Replies

5. UNIX for Beginners Questions & Answers

How do I remove leading spaces in UNIX when count of space character is not fixed? Example below-

Script showStreamsGLIS$reg.$env.ksh gives me output as below- Job Stime Etime Status ExitCode GLIS-AS-S-EFL-LOCK-B ----- ----- OI 103313880/0 GLIS-ALL-Q-EOD-FX-UPDT-1730-B ----- ----- TE 0/0 GLIS-TK-S-BWSOD-B ... (8 Replies)
Discussion started by: Tanu
8 Replies

6. OS X (Apple)

Remove leading spaces from file names and folders

Hi All, I have a vexing issue with leading spaces in file names. Basically, we're moving tons of data from our ancient afp file share to Box.com and Box forbids leading spaces in files or folders. The HFS file system seems to be perfectly fine with this, but almost all other Unix file systems... (1 Reply)
Discussion started by: prometheon123
1 Replies

7. Shell Programming and Scripting

Not able to remove leading spaces

Hi Experts, In a file tht i copied from the web , i am not able to remove the leading white spaces. I tried the below , none of them working . I opened the file through vi to check for the special characters if any , but no such characters found. Your advice will be greatly appreciated. sed... (5 Replies)
Discussion started by: panyam
5 Replies

8. Shell Programming and Scripting

remove trailing and leading spaces using tr command

Dear All, can you please advice how do i remove trailing and leading spaces from a pipe-delimited file using "tr" command the below cmd, i tried removed all spaces tr -d ' '<s1.txt>s2.txt1 Many thx Suresh (5 Replies)
Discussion started by: sureshg_sampat
5 Replies

9. Shell Programming and Scripting

sed over writes my original file (using sed to remove leading spaces)

Hello and thx for reading this I'm using sed to remove only the leading spaces in a file bash-280R# cat foofile some text some text some text some text some text bash-280R# bash-280R# sed 's/^ *//' foofile > foofile.use bash-280R# cat foofile.use some text some text some text... (6 Replies)
Discussion started by: laser
6 Replies

10. Shell Programming and Scripting

remove leading spaces from a line

Hi friends I need some help, I have a file which looks as follows TEMP 014637065 014637065 517502 517502 RTE 517502 517502 RTE AWATER_TEST 12325 23563 588323 2323 5656 32385 23235635 ANOTHER_TEST 12 5433 FTHH 5653 833 TEST 123 123 3235 5353 353 53 35 353 535 3 YTERS GJK JKLS ... (6 Replies)
Discussion started by: lijojoseph
6 Replies
Login or Register to Ask a Question