String copy


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting String copy
# 8  
Old 03-25-2011
You should consider adding a non ambiguous separator between the Brand and the product (for example like colon ":" to follow POSIX standard)
Indeed, that would gather the advantages of

1) making the last column adding operation useless
2) Fixing ambiguous brand selection due to the unknown number of words if could be made of.

Code:
# sed 's/Berio/&:/;s/Castillo/&:/;s/Farchioni/&:/;s/: /:/' infile
Castillo:d'Canena Extra Virgin Arbequina Olive Oil (250ml) 8 10000
Castillo:d'Canena Extra Virgin Picual Olive Oil (250ml) 8 10000
Farchioni:Il Casolare Olive Oil Extra Virgin (1L) 8 10000
Filippo Berio:Extra Virgin Olive Oil (250ml) 8 10000
Filippo Berio:Extra Virgin Olive Oil (500ml) 8 10000
Filippo Berio:Extra Virgin Olive Oil (750ml) 8 10000
Filippo Berio:Extra Virgin Olive Oil (1L) 8 10000
Filippo Berio:Extra Virgin Olive Oil Special Selection (250ml) 8 10000
Filippo Berio:Extra Virgin Olive Oil Tin (1L) 8 10000
Filippo Berio:Gusto Fruttato Extra Virgin Olive Oil (500ml) 8 10000
Filippo Berio:Mild & Light Olive Oil (250ml) 8 10000
Filippo Berio:Mild & Light Olive Oil (500ml) 8 10000
Filippo Berio:Mild & Light Olive Oil (1L) 8 10000

---------- Post updated at 02:06 PM ---------- Previous update was at 01:54 PM ----------

You could then extract the brand easy :

Code:
# cut -d: -f1 infile | sort -u
Castillo
Farchioni
Filippo Berio


Last edited by ctsgnb; 03-25-2011 at 11:01 AM..
This User Gave Thanks to ctsgnb For This Post:
# 9  
Old 03-25-2011
Thank you CTSGNB, interesting solution of yours.

As I've only got 40 or so of these I think I'll carry on the the AWK solution, something like this:

Code:
awk '/Filippo Berio/{print $0 FS $2;next}1' test1.txt > test2.txt
awk '/Sun Grown/{print $0 FS $2;next}1' test2.txt > test3.txt

I can't figure out how to work on the same input file like you can with sed -i so I'll just re-direct the output for each line.

Last edited by Franklin52; 03-25-2011 at 10:22 AM.. Reason: Please use code tags
# 10  
Old 03-25-2011
Once you have colon delimited your file, adding the last column is just piece of cake

Code:
# cat outfile
Castillo:d'Canena Extra Virgin Arbequina Olive Oil (250ml) 8 10000
Castillo:d'Canena Extra Virgin Picual Olive Oil (250ml) 8 10000
Farchioni:Il Casolare Olive Oil Extra Virgin (1L) 8 10000
Filippo Berio:Extra Virgin Olive Oil (250ml) 8 10000
Filippo Berio:Extra Virgin Olive Oil (500ml) 8 10000
Filippo Berio:Extra Virgin Olive Oil (750ml) 8 10000
Filippo Berio:Extra Virgin Olive Oil (1L) 8 10000
Filippo Berio:Extra Virgin Olive Oil Special Selection (250ml) 8 10000
Filippo Berio:Extra Virgin Olive Oil Tin (1L) 8 10000
Filippo Berio:Gusto Fruttato Extra Virgin Olive Oil (500ml) 8 10000
Filippo Berio:Mild & Light Olive Oil (250ml) 8 10000
Filippo Berio:Mild & Light Olive Oil (500ml) 8 10000
Filippo Berio:Mild & Light Olive Oil (1L) 8 10000

Code:
# awk -F: '{print $0":"$1}' outfile

or
Code:
# awk -F: '{print $0,$1}' OFS=: outfile
Castillo:d'Canena Extra Virgin Arbequina Olive Oil (250ml) 8 10000:Castillo
Castillo:d'Canena Extra Virgin Picual Olive Oil (250ml) 8 10000:Castillo
Farchioni:Il Casolare Olive Oil Extra Virgin (1L) 8 10000:Farchioni
Filippo Berio:Extra Virgin Olive Oil (250ml) 8 10000:Filippo Berio
Filippo Berio:Extra Virgin Olive Oil (500ml) 8 10000:Filippo Berio
Filippo Berio:Extra Virgin Olive Oil (750ml) 8 10000:Filippo Berio
Filippo Berio:Extra Virgin Olive Oil (1L) 8 10000:Filippo Berio
Filippo Berio:Extra Virgin Olive Oil Special Selection (250ml) 8 10000:Filippo Berio
Filippo Berio:Extra Virgin Olive Oil Tin (1L) 8 10000:Filippo Berio
Filippo Berio:Gusto Fruttato Extra Virgin Olive Oil (500ml) 8 10000:Filippo Berio
Filippo Berio:Mild & Light Olive Oil (250ml) 8 10000:Filippo Berio
Filippo Berio:Mild & Light Olive Oil (500ml) 8 10000:Filippo Berio
Filippo Berio:Mild & Light Olive Oil (1L) 8 10000:Filippo Berio

# 11  
Old 03-25-2011
Quote:
Originally Posted by michaelrozar17
Try..
Code:
awk '/Weight Watchers/{print $0 FS $2;getline}1' inputfile > outfile

Hi Michael or anyone

I'm having trouble with AWK and with products which have an apostrophe in the name, .i.e.

Fisherman's Friend

I've tried escaping the character with \ and putting it in quotes but no luck. any ideas?

Many thanks
# 12  
Old 03-25-2011
as suggested previously, you should focus on setting up a separator at the right place

Code:
sed "s/Fisherman's Friend/&:/;s/: /:/" outfile

then the awk run using the : as separator would just handle it as a piece of cake
# 13  
Old 03-25-2011
Unfortunately I've got around 1500 of these brands, I guess there's no getting away from cleaning up the data first with a separator. :-)
# 14  
Old 03-26-2011
How has you input file been generated ? maybe there is a way to directly generate it with a separator between the brand and the product name instead of tediously doing it afterward

Do you have , somewhere, a file containing the list of the brand ?

You could also upload your entire file so we can help to format it as expected.
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Copy a string to another file

OS version: RHEL 6.7 Shell : Bash I have a file like below. It has 500K lines. I want to extract TAG_IDs shown in single quote at the end to copied to another file. As if I had copied the TAG_IDs using block select (Column Select) in modern text editor $ cat file.txt UPDATE TAGREF SET... (9 Replies)
Discussion started by: John K
9 Replies

2. Shell Programming and Scripting

Copy last third char form string

HI Input A.txt ABC907 ABC907_1B_9 ABC985 ABC985_1A_9 ABC985 ABC985_1B_9 ABC985 ABC985_1C_9 ABC05037 ABC05037_1A_9 ABC05037 ABC05037_1B_9 Base of column 2 last third char. If It is A the 1,if B then 2 If C then 3 File B.txt ABC907 ABC907_1B_9 2 ABC985 ABC985_1A_9 1 ABC985... (8 Replies)
Discussion started by: asavaliya
8 Replies

3. Shell Programming and Scripting

Help on Script of Copy String from column

Hello, My DATA: PLOKIJ1234G 12 13 14 15 PLOKIJ1234E 12 13 14 15 PLOKIJ1234F 12 22 33 44 IJNUHB12346 55 66 77 88 IJNUHB12347 32 34 45 67 IJUHU345D 23 23 22 33 IJUHYG23E 11 24 23 23 IJUHYG23F 77 88 99 00 output: PLOKIJ1234 PLOKIJ1234G 12 13 14 15 PLOKIJ1234... (11 Replies)
Discussion started by: asavaliya
11 Replies

4. Shell Programming and Scripting

input a string and copy lines from a file with that string on it

i have a file1 with many lines. i have a script that will let me input a string. for example, APPLE. what i need to do is to copy all lines from file1 where i can find APPLE or any string that i specify and paste in on file 2 thanks in advance! (4 Replies)
Discussion started by: engr.jay
4 Replies

5. Programming

String copy in C language

Hello, I have a text file (FILE.txt) that contains the following information: userAxxx.name@email.com userA userBxxx.name@email.com userB userxxCx.name@email.com userC and more.... in scripting, I can easily do a grep and awk to store an email info into a string... (6 Replies)
Discussion started by: tqlam
6 Replies

6. Shell Programming and Scripting

Copy-paste string automatically

Hi i'm not really sure if it's possible or not in bash. Basically I want to convert a ssh key created with ssh-keygen to putty format. The problem is that puttygen doesn't have an option for supplying passphrase in batch mode so it must be entered manually. For sskey generated with ssh-keygen i use... (2 Replies)
Discussion started by: ktm
2 Replies

7. Shell Programming and Scripting

how to copy one string in ksh into another

Hi Does anybody know if there is a utility/command in ksh which would allow to copy/insert the contents of one string into certain positions of the other? for example: A=" ABCDEF " B="HHH" I need to insert contents of string "B" into string "A" from position 3 to 5, so... (3 Replies)
Discussion started by: aoussenko
3 Replies

8. Shell Programming and Scripting

find a string and copy the string after that

Hi! just want to seek help on this: i have a file wherein i want to find a string and copy the string after that and paste that other string to a new file. ex: TOTAL 123456 find "TOTAL" and copy "123456" and paste "123456" to a new file NOTE: there are many "TOTAL" strings on that... (12 Replies)
Discussion started by: kingpeejay
12 Replies

9. UNIX for Dummies Questions & Answers

Copy or Grep all text below a string

Hello, I am trying to copy all the text from a file below a search string... For example i want to grep all text below the word sure: UNIX for Dummies Questions & Answers If you're not sure where to post a UNIX or Linux question, post it here. All UNIX and Linux newbies welcome !! ... (2 Replies)
Discussion started by: aliaa2a
2 Replies

10. Shell Programming and Scripting

Copy / string.

I'm trying to get a script to copy a url then put it in a different place in the file. Example is currently the script goes to a site takes the urls on it and then puts them into an html file. Only thing is I want to make them into links. So currently lynx goes to the page takes out the urls.... (6 Replies)
Discussion started by: Paulw0t
6 Replies
Login or Register to Ask a Question