How to cut by delimiter, and delimiter can be anything except numbers?


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting How to cut by delimiter, and delimiter can be anything except numbers?
# 8  
Old 03-06-2012
Now it's so obvious that I feel stupid Smilie
Thank you Alister Smilie
# 9  
Old 03-06-2012
Quote:
Originally Posted by tukuyomi
Now it's so obvious that I feel stupid Smilie
Thank you Alister Smilie
It happens to everyone from time to time. Sometimes, when debugging, we see what we expect instead of what's actually there.

Regards,
Alister
# 10  
Old 03-06-2012
Quote:
Originally Posted by alister
Code:
tr -cs '[:digit:]' '[\t*]'

@alister

I am rather sure you can help me to have a better understanding of this notation:
Is the wildcard mandatory ? What is it used for ?
(i mean isn't the use of the -s option of tr sufficient and intended for that gathering purpose?) or are there some other reasons to prefer that notation rather than a simple '\t' ?

Thanks in advance
# 11  
Old 03-06-2012
yas:
Code:
grep -Eo '[0-9]+' infile | paste - - -

Analogous to the nice tr statement:
Code:
sed 's/[^0-9][^0-9]*/\t/g' infile

# 12  
Old 03-06-2012
@Scruti,

I am just wondering about the wildcard in the '[\t*]' notation, why not to just use '\t' instead ? Is that wildcard just a litteral one (part of the [ ] list), or is it interpreted ?

Last edited by ctsgnb; 03-06-2012 at 04:39 PM..
# 13  
Old 03-06-2012
Quote:
Originally Posted by ctsgnb
@alister

I am rather sure you can help me to have a better understanding of this notation:
Is the wildcard mandatory ? What is it used for ?
(i mean isn't the use of the -s option of tr sufficient and intended for that gathering purpose?) or are there some other reasons to prefer that notation rather than a simple '\t' ?

Thanks in advance
That notation as I used it is not so much a wildcard as a repetition operation. It says to pad the second set with the preceding characer, \t, until the second set's length equals the first's (a number can follow the asterisk to indicate an exact count, [\t*3] would include three tabs in the set).

Why bother with that? Historically, BSD and SysV tr implementations behaved differently when the second set is shorter than the first. This notation guarantees that this does not occur.

In practice, at least with open source systems, you'll probably never run into this issue.

For more info, see the POSIX man page for tr. Specifically, the EXTENDED DESCRIPTION section for the details of the syntax and APPLICATION USAGE for the history.

Regards,
Alister
This User Gave Thanks to alister For This Post:
# 14  
Old 03-06-2012
The notation with the square brackets and the asterisk makes sure that the number of characters in the second string is equal to the length of the first string. This is the most portable way. If you use a single character for the second string, then it is not guaranteed to work across all implementations...
This User Gave Thanks to Scrutinizer For This Post:
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Perl Code to change file delimiter (passed as argument) to bar delimiter

Hi, Extremely new to Perl scripting, but need a quick fix without using TEXT::CSV I need to read in a file, pass any delimiter as an argument, and convert it to bar delimited on the output. In addition, enclose fields within double quotes in case of any embedded delimiters. Any help would... (2 Replies)
Discussion started by: JPB1977
2 Replies

2. Shell Programming and Scripting

Cut cmd with delimiter as |#|

Hi All- We have a file data as below with delimiter as |#| 10|#|20|#|ABC 13|#|23|#|PBC If I want to cut the 2nd field out of this, below command is not working as multiple pipe is causing an issue , it seems cut -f2 -d"|#|" <file_name> can you please help to provide the correct command... (7 Replies)
Discussion started by: sureshg_sampat
7 Replies

3. Shell Programming and Scripting

Shell script to put delimiter for a no delimiter variable length text file

Hi, I have a No Delimiter variable length text file with following schema - Column Name Data length Firstname 5 Lastname 5 age 3 phoneno1 10 phoneno2 10 phoneno3 10 sample data - ... (16 Replies)
Discussion started by: Gaurav Martha
16 Replies

4. Shell Programming and Scripting

cut delimiter and save

i have list of names in a text file and I wanted to delete the commas en every line. for example: inside the text is a list of names in it with commas after each line. I wanted to delete these commas. which command must I execute for this? unix, dale, shawn, aaron, (4 Replies)
Discussion started by: garfish
4 Replies

5. Shell Programming and Scripting

how to cut all string after the last delimiter?

hi all, suppose a string: abc/def/ghi/jkl/mn.txt and i want to get the file name without the path. however, different files have different paths, therefore the number of delimiter is uncertain. thanks so much! (3 Replies)
Discussion started by: sunnydanniel
3 Replies

6. Shell Programming and Scripting

Cut columns with delimiter

HI, I have a file like below "103865","103835","Zming","","Zhu","103965","Sunnyvale","US", "116228","116227","Morlla","","Kowalski","113228","Paese "(Treviso)""IT" I want to validate the 7th column which is below. "Sunnyvale" "Paese In the above 7th column Paese is not ended with... (9 Replies)
Discussion started by: Krrishv
9 Replies

7. Shell Programming and Scripting

cut -d with more than 1 delimiter?

I need to cut or otherwise get the 4th and 5th position output of for i in `date +%H` ; do vnstat --dumpdb | grep "h;$i" ; done example output is: h;13;1310318701;443;93 I only need ";443;93" from any given run of "for i in `date +%H` ; do vnstat --dumpdb | grep "h;$i" ; done" Thanks... (3 Replies)
Discussion started by: Habitual
3 Replies

8. UNIX for Advanced & Expert Users

use a word as a delimiter with cut

Is there a way to use a word as a delimiter with cut? Or is there a way to use sed or awk with a word as a delimiter? I don't care which program I use for a delimiter I just want to use a word as a delimiter. (2 Replies)
Discussion started by: cokedude
2 Replies

9. Shell Programming and Scripting

Cut Number which appear before a delimiter

Hi All, How can i use the cut option to only output the number of rows, which is 2 is this case ? Pls note that the number of digit before the delimiter ":" is always varying. $ grep -n uuu xxx 2:** xxx yyy gg 44 tt uuu 2007 $ (2 Replies)
Discussion started by: Raynon
2 Replies

10. Shell Programming and Scripting

\r as delimiter in cut

I need to use \r as a delimiter in the -d option of the cut comand . Any help ? Thanks in advance . SD (5 Replies)
Discussion started by: shweta_d
5 Replies
Login or Register to Ask a Question