cut with delimiter respect text


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting cut with delimiter respect text
# 1  
Old 07-27-2012
Question cut with delimiter respect text

Hi,
Can someone help me to get the shortest command

Input file
=========
Code:
I|know|"english|french"
It|can|have|four|delimiters

Desired output
===========
Code:
"english|french"
have

If I use cut -d "|" -f3 , i am getting "english as 3rd field.But I would like to get the whole text in quotes("") as 3rd field. I have this problem only in 3rd field. Any help is higly appreciated. Thank you,

Initially, i tried to convert all | symbols within quotes to # and to use the CUT -d "|" to extract the 3rd field, then again replace back all # to |. But it is very lengthy, Any short and efficient command is very helpful,

Cheers,

Last edited by joeyg; 07-27-2012 at 12:18 PM.. Reason: Please wrap data and sripts with CodeTags
# 2  
Old 07-27-2012
Your file isn't really pipe-delimited if it has pipes in the fields.

You can kludge around this by using " as a delimiter and replacing the problem characters inside. Then you can cut as you please. This has the useful side-effect of removing the quotes, too.

You can do this all in a single awk to cut down on the pipe chain. Not exactly a one-liner but it's still just one command.
Code:
$ echo "I|know|\"english|french\"" | awk -F'"' '{
        for(N=2; N<=NF; N+=2) gsub(/[|]/, "#", $N);
        split($0, A, "|");
        gsub(/#/, "|", A[FIELD]);
        print A[FIELD] }' OFS="" FIELD=3

english|french

$

# 3  
Old 07-27-2012
Hope this helps:

Code:
cat file 
I|know|"english|french"
It|can|have|four|delimiters

awk -F'"' '{print "\""$2"\"";getline;gsub(/\|/, " ");split($1,array," ");print array[3]}' file 

"english|french"
have

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Sorting a text file with respect to Function/Keyword

Hello Experts, I am truly a beginner in shell and perl . Need an urgent help with sorting a file. please help. wouldn't mind whether in perl or shell script. Here are the details. ------------------------------------------------------ Input Text file EX:... (9 Replies)
Discussion started by: pradyumnajpn10
9 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 by delimiter, and delimiter can be anything except numbers?

Hi all, I have a number of strings like below: //mnt/autocor/43°13'(33")W/ and i'm trying to get the numbers in this string, for example 431333 please help thanks ahead (14 Replies)
Discussion started by: sunnydanniel
14 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