Visit Our UNIX and Linux User Community


sed - extracting the first word only if match


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting sed - extracting the first word only if match
# 1  
Old 10-01-2013
sed - extracting the first word only if match

Hello.

from a text file, I want to get only the first word ( before blank ) following code=

Code:
grep -i -e "WORD1"  "/path/to/text/file.txt | sed -n 's/WORD1[ ]\+//p' | sed -n 's/code=/\1/p'

return an error.
Code:
sed: -e expression #1, char 12: invalid reference \1 on `s' command's RHS

For debugging I have try this

Code:
asus:~ # echo "WORD1 code1=value1-idkey1 code2=value1" |  sed -n 's/WORD1[ ]\+//p' | sed -n -e 's/code1=//p'
value1-idkey1 code2=value1
asus:~ #

Then to remove the end of the line I have try this, but get an error

Code:
asus:~ # echo "WORD1 code1=value1-idkey1 code2=value1"  |  sed -n 's/WORD1[ ]\+//p' | sed -n -e 's/code1=/\1/p'
sed: -e expression #1, char 13: invalid reference \1 on `s' command's RHS
asus:~ #

I want this :

Code:
asus:~ # echo "WORD1 code1=value1-idkey1 code2=value1"  |  sed -n 's/WORD1[ ]\+//p' | sed -n -e xxxxxxxxxxxxxxxxx'
value1-idkey1
asus:~ #

Any help is welcome.
# 2  
Old 10-01-2013
Hi,
You must catch argument if you want use this:
Code:
echo "WORD1 code1=value1-idkey1 code2=value1"  |  sed -n 's/.*code1=\([^ ]\+\).*/\1/p'

\1 ==> catch either \(...\)
Regards.
This User Gave Thanks to disedorgue For This Post:
# 3  
Old 10-01-2013
Include the WORD1 in the search
Code:
sed -n 's/WORD1[ ]\+code1=\([^ ]\+\).*/\1/p'

This User Gave Thanks to MadeInGermany For This Post:
# 4  
Old 10-02-2013
Code:
awk -F"[ =]" '/WORD1/ {print $3}' file
value1-idkey1

This User Gave Thanks to Jotne For This Post:
# 5  
Old 10-02-2013
Thank you everybody.

But it would be great if you can explain how does it works.

Smilie
# 6  
Old 10-02-2013
sed:
the \1 in the substitution returns what is matched within the \( \) in the search.
The search must end with .*, so the rest of the line is discarded.
awk:
by using a clever set of field delimiters (" " and "=") the input line is split into "WORD1", "code1", "value1-idkey1", "code2", "value1"
They can be referenced as $1, $2, $3, $4, $5, respectively.
These 2 Users Gave Thanks to MadeInGermany For This Post:
# 7  
Old 10-03-2013
Here's another example:
Code:
echo "WORD1 code1=value1-idkey1 code2=value1" | perl -pe "s;.*?=(\S+).*;\1;"


Previous Thread | Next Thread
Test Your Knowledge in Computers #386
Difficulty: Medium
The Linux telnet command provides a user interface to a remote system using the SSH protocol.
True or False?

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

sed script to delete the last word after a last pattern match

Hi Guys , I am having a file as stated below File 1 sa0 -- i_core/i_core_apb/i_afe0_controller/U261/A sa0 -- i_core/i_core_apb/i_afe0_controller/U265/Z sa1 -- i_core/i_core_apb/i_afe0_controller/U265/A sa1 -- i_core/i_core_apb/i_afe0_controller/U268/Z sa1 -- ... (7 Replies)
Discussion started by: kshitij
7 Replies

2. Shell Programming and Scripting

Replacing the first word if the word three match

Dear ALL, I have sample file : IDcentos-forum,bash,linuxCentOS,GNome IEfedora-milis,cli,linuxRedhat,KDE IRfreebsd-milis,aix,unixbsd,pyton required output: centos,bash,linuxCentOS,GNome fedora,cli,linuxRedhat,KDE freebsd,aix,unixbsd,pyton Can you help me pls.. (1 Reply)
Discussion started by: gnulyn
1 Replies

3. Shell Programming and Scripting

Replacing first word while extracting

Hello All, I am extracting a part of file. the file looks as follows USING CHARACTER SET UTF8 DEFINE JOB ( DEFINE SCHEMA Flat_File_Schema ( cntnt_id VARCHAR(10) ); DEFINE OPERATOR o_mload TYPE update SCHEMA * ATTRIBUTES ( VARCHAR TdpId = @TdpId (5 Replies)
Discussion started by: nnani
5 Replies

4. UNIX for Dummies Questions & Answers

Extracting part of a word

I have the code message={TP=2012:09:23:00:00:00:GMT,SD=2012:09:23:00:00:00:GMT,SP=2,FT=CCGT,FG=3605} I want to extract the FG=3605 parts of this. Please help. I am trying to do this using awk or unix. (5 Replies)
Discussion started by: JenniferTopham
5 Replies

5. Shell Programming and Scripting

Problems extracting word using SED

I have a file containing strings such as: UPDATE PS_CA_BI_FF2_TA3 SET DELETE_ME = 'Y' WHERE PROCESS_INSTANCE BI.LAST_UPDATE_DTTM FROM PS_CA_BP_LINES LINE, PS_INTFC_BI BI WHERE EXISTS ( SELECT 'X' FROM PS_CA_BILL_PLAN BP WHERE BP.CONTRACT_NUM %Select(COUNTER4) SELECT COUNT(*) FROM PS_INTFC_BI... (2 Replies)
Discussion started by: simpletech369
2 Replies

6. Shell Programming and Scripting

Extracting a word from a variable

Hi Guys, Need you quick assistance on the below, trying to extract a word from a variable i.e. acmi101acmi102acmi103acmi104 When i use the following code awk '{gsub(/cmi102/,"")};1' it leaves a space in the variable, need to get rid of the space that it leaves. Any ideas. the above... (3 Replies)
Discussion started by: eo29
3 Replies

7. Shell Programming and Scripting

extracting sentences that only contain a word

Hi guys Need your help how do I extract sentences with only a word i.e. today is hot hot very humid humid2 Sample output hot (6 Replies)
Discussion started by: jamestan
6 Replies

8. UNIX for Dummies Questions & Answers

extracting sentences that only contain a word

Hi guys Need your help how do I extract sentences with only a word i.e. today is hot hot very humid humid2 Sample output hot very (0 Replies)
Discussion started by: jamestan
0 Replies

9. Programming

sed no match word end with hyphen

Hi, This is my first post.It has two parts first part: I want to match a line that starts with whitespace tab or similar followed by must start with specific word and not match same word start with hyphen like this: grep height file1: height: 150px; line-height: 1.5em; height:... (4 Replies)
Discussion started by: medium_linux
4 Replies

10. Shell Programming and Scripting

Extracting from second word

Hi all, I need to extract the Particular string from the whole word,the input file is : 123,345,aaaa,555,....,.... I need all the record from 345 so i need to eliminate the first record. Output: 345,aaa,5555,....,.....,..... Thanks in advance. (3 Replies)
Discussion started by: ithirak17
3 Replies

Featured Tech Videos