Visit Our UNIX and Linux User Community


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?
# 8  
Old 08-18-2013
the original file had "C 56" as the line but to test I also tried the other possibilities
"C 56" , "C 6", "C156"
Each iteration gave a following space in the outputted file and I just quoted the output from one of the other tests

It is only the first line I need to parse. The second and subsequent lines will be dealt with in another part of the script. I probably should not have included them as it unnecessarily confused the requirements.

The part of the input file I need to parse is
Code:
"C 56","Home athletics center","LAC"

The output I require is to be
Code:
D;56;Home athletics center;;M;;

As i mentioned, the code given in the first reply works, but adds a space after the numbers

Ken

Last edited by Don Cragun; 08-18-2013 at 07:47 AM.. Reason: Added ICODE tags to make varying number of spaces visible.
# 9  
Old 08-18-2013
So, with you new statement of what you want, try:
Code:
#!/bin/bash
#set initial variables
file="FILE.EXT"     # input filename

IFS='"' read -r x cn x centnam x < "$file"
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" > MM_file.txt

PS Note that although your current input has 1, 2, or 3 digit numbers; the code above will work with numbers that are 1 or more digits long (as long as your total input line length is less than LINE_MAX bytes long for whatever value LINE_MAX has on your system).

Last edited by Don Cragun; 08-18-2013 at 08:00 AM.. Reason: Add PS.
This User Gave Thanks to Don Cragun For This Post:
# 10  
Old 08-18-2013
Excellent Thanks that works.Smilie

Now all I need to do is review it in detail to understand how it works and hopefully remember it, but that is a task for me.

Re reading back thru the thread I realised the first reply also has a working Output if the Output line enclosed the Variable in a another set of brackets.

Code:
echo "D;$(($centnum));$centnam;;M;;" > MM_file.txt

I assume you knwo why, but can you explain why that format removes the leading space?

Thanks again
Ken
# 11  
Old 08-18-2013
It's converting the variable into a numeric value, then operates on it. BTW, you don't need the "$" then:
Code:
echo ">"$((centnum))"<"
>56<

# 12  
Old 08-18-2013
Quote:
Originally Posted by RudiC
It's converting the variable into a numeric value, then operates on it. BTW, you don't need the "$" then:
Code:
echo ">"$((centnum))"<"
>56<

Cool Thank you all for your help.Smilie
I am quite amazed that so many replies on a sunday

Ken
# 13  
Old 08-18-2013
Quote:
Originally Posted by kcpoole
Excellent Thanks that works.Smilie

Now all I need to do is review it in detail to understand how it works and hopefully remember it, but that is a task for me.

Re reading back thru the thread I realised the first reply also has a working Output if the Output line enclosed the Variable in a another set of brackets.

Code:
echo "D;$(($centnum));$centnam;;M;;" > MM_file.txt

I assume you knwo why, but can you explain why that format removes the leading space?

Thanks again
Ken
The arithmetic expansion of $(($x)) when $x expands to the string " 56" is 56.
Similarly, the parameter expansion of ${x##*[!1-9]} (which removes everything in the string before the 1st non-zero digit) when $x expands to the string "c 56" is also 56.
This User Gave Thanks to Don Cragun For This Post:

Previous Thread | Next Thread
Test Your Knowledge in Computers #554
Difficulty: Medium
Using printf() in C, %d formats a decimal variable or literal.
True or False?

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

Featured Tech Videos