simple selection between two words


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting simple selection between two words
# 1  
Old 12-10-2009
simple selection between two words

Hi guys, got an issue with a relatively simple bit of awk but stumping me. Want this to run on several different lines. The first is:

INPUT="<Cell ss:StyleID="s70"><Data ss:Type="String">ND</Data></Cell>"
Code:
echo $INPUT | awk 'NR==1022' | awk '/String">/,/</'

Gives me no output atm.

The output I'm looking for on this line is "ND"
Any ideas?
# 2  
Old 12-10-2009
Hi, firstly I think you should use single quotes to assign that string to INPUT:
Code:
$ INPUT="<Cell ss:StyleID="s70"><Data ss:Type="String">ND</Data></Cell>"
$ echo $INPUT
<Cell ss:StyleID=s70><Data ss:Type=String>ND</Data></Cell>

$ INPUT='<Cell ss:StyleID="s70"><Data ss:Type="String">ND</Data></Cell>'
$ echo $INPUT
<Cell ss:StyleID="s70"><Data ss:Type="String">ND</Data></Cell>

Secondly, if you use only the first awk:
Code:
echo $INPUT | awk 'NR==1022'

the string will be empty since the string only contains one record so it will never reach record 1022.
Thirdly,
Code:
awk '/String">/,/</'

does not operate on a single line, but rather prints all the lines from a line that contains 'String">' until a line that contains '<'

What you are looking for is probably something like:
Code:
echo $INPUT|sed 's/.*String">\([^<]*\).*/\1/'

or
Code:
sed '1022s/.*String">\([^<]*\).*/\1/'

If you just want line 1022 from a multiline input.
# 3  
Old 12-10-2009
Quote:
Originally Posted by mikepegg
Hi guys, got an issue with a relatively simple bit of awk but stumping me. Want this to run on several different lines. The first is:

INPUT="<Cell ss:StyleID="s70"><Data ss:Type="String">ND</Data></Cell>"
Code:
echo $INPUT | awk 'NR==1022' | awk '/String">/,/</'

Gives me no output atm.

The output I'm looking for on this line is "ND"
Any ideas?
why the need to use awk 2 times?? Also, NR=1022 means record 1022 and your INPUT variable only has 1 line. There will of course be no output.
Code:
awk 'NR==1022 && /String\042/ { sub(/.*String\042>/,"");sub(/<\/Data.*/,"");print}' file

# 4  
Old 12-15-2009
Thanks for the responses guys. My mistake trying to cut down the input file to be forum workable and missing out on that.

ghostdog74's code

Code:
awk 'NR==1022 && /String\042/ { sub(/.*String\042>/,"");sub(/<\/Data.*/,"");print}' file

worked a treat. thanks!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Replace particular words in file based on if finds another words in that line

Hi All, I need one help to replace particular words in file based on if finds another words in that file . i.e. my self is peter@king. i am staying at north sydney. we all are peter@king. How to replace peter to sham if it finds @king in any line of that file. Please help me... (8 Replies)
Discussion started by: Rajib Podder
8 Replies

2. Shell Programming and Scripting

Search words in any quote position and then change the words

hi, i need to replace all words in any quote position and then need to change the words inside the file thousand of raw. textfile data : "Ninguno","Confirma","JuicioABC" "JuicioCOMP","Recurso","JuicioABC" "JuicioDELL","Nulidad","Nosino" "Solidade","JuicioEUR","Segundo" need... (1 Reply)
Discussion started by: benjietambling
1 Replies

3. UNIX for Dummies Questions & Answers

Deleting words between every appearance of two words

Hi there, newbie there. I've been browsing the forums hoping to find a solution that answers a problem similar to what I need, but haven't had much luck. Any help would be greatly appreciated. Thanks! I need to delete a bunch of text between every appearance of two words in a really large file... (3 Replies)
Discussion started by: lendl
3 Replies

4. UNIX for Dummies Questions & Answers

Replace the words in the file to the words that user type?

Hello, I would like to change my setting in a file to the setting that user input. For example, by default it is ONBOOT=ON When user key in "YES", it would be ONBOOT=YES -------------- This code only adds in the entire user input, but didn't replace it. How do i go about... (5 Replies)
Discussion started by: malfolozy
5 Replies

5. Shell Programming and Scripting

Gawk gensub, match capital words and lowercase words

Hi I have strings like these : Vengeance mitt Men Vengeance gloves Women Quatro Windstopper Etip gloves Quatro Windstopper Etip gloves Girls Thermobite hooded jacket Thermobite Triclimate snow jacket Boys Thermobite Triclimate snow jacket and I would like to get the lower case words at... (2 Replies)
Discussion started by: louisJ
2 Replies

6. Shell Programming and Scripting

How count the number of two words associated with the two words occurring in the file?

Hi , I need to count the number of errors associated with the two words occurring in the file. It's about counting the occurrences of the word "error" for where is the word "index.js". As such the command should look like. Please kindly help. I was trying: grep "error" log.txt | wc -l (1 Reply)
Discussion started by: jmarx
1 Replies

7. Shell Programming and Scripting

SED - delete words between two possible words

Hi all, I want to make an script using sed that removes everything between 'begin' (including the line that has it) and 'end1' or 'end2', not removing this line. Let me paste an 2 examples: anything before any string begin few lines of content end1 anything after anything before any... (4 Replies)
Discussion started by: meuser
4 Replies

8. Shell Programming and Scripting

Splitting Concatenated Words in Input File with Words from a Master File

Hello, I have a complex problem. I have a file in which words have been joined together: Theboy ranslowly I want to be able to correctly split the words using a lookup file in which all the words occur: the boy ran slowly slow put child ly The lookup file which is meant for look up... (21 Replies)
Discussion started by: gimley
21 Replies

9. Shell Programming and Scripting

Shell script to find out words, replace them and count words

hello, i 'd like your help about a bash script which: 1. finds inside the html file (it is attached with my post) the code number of the Latest Stable Kernel, 2.finds the link which leads to the download location of the Latest Stable Kernel version, (the right link should lead to the file... (3 Replies)
Discussion started by: alex83
3 Replies

10. UNIX for Dummies Questions & Answers

Adding words after a set of words

Greetings. I am a UNIX newbies. I am currently facing difficulties dealing with a large data set and I would like to ask for helps. I have a input file like this: ak 1 AAM1 ak 2 AAM1 ak 3 AAM1 ak 11 AMM2 ak 12 AMM2 ak 13 AMM2 ak 14 AMM2 Is there any possibility for me to... (7 Replies)
Discussion started by: Amanda Low
7 Replies
Login or Register to Ask a Question