awk to remove last two -*-*


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting awk to remove last two -*-*
# 1  
Old 01-04-2013
awk to remove last two -*-*

Code:
fq-bar-something-1.0-r1.src.rpm  ----> fq-bar-something
fq-bar-xx-r1-rel.src.rpm   ---------> fq-bar-xx
fq-bar-ff-ver-11-rel.src.rpm   -------> fq-bar-ff-ver

any help?
# 2  
Old 01-05-2013
Code:
cat filename | awk -F '-' '{$NF=""; $(NF-1)=""; print }' | sed 's/ /-/g' | sed 's/--$//g'

Please next time seperate input and expected output in two different CODEQOUTE

Last edited by fuad_; 01-05-2013 at 01:38 AM..
# 3  
Old 01-05-2013
Quote:
Originally Posted by fuad_
Try this

Code:
$ cat filename | awk -F '-' '{$NF=""; $(NF-1)=""; print }' | sed 's/ /-/g' | sed 's/--$//g' | sed 's/>-/> /g'

Here how it works

Code:
$ cat filename | awk -F '-' '{$NF=""; $(NF-1)=""; print }' | sed 's/ /-/g' | sed 's/--$//g' | sed 's/>-/> /g' 

fq-bar-something-1.0-r1.src.rpm------> fq
fq-bar-xx-r1-rel.src.rpm------------> fq
fq-bar-ff-ver-11-rel.src.rpm----------> fq-bar


That doesn't get what I want. please see my expected ouput
# 4  
Old 01-05-2013
Code:
 cat filename | awk -F '-' '{$NF=""; $(NF-1)=""; print }' | sed 's/ /-/g' | sed 's/--$//g'

Please next time seperate input and expected output in two different CODEQOUTE
# 5  
Old 01-05-2013
Try:
Code:
awk 'NF-=2{$1=$1}1' FS=- OFS=- file

Code:
sed 's/-[^-]*-[^-]*$//' file

# 6  
Old 01-05-2013
I had wanted to offer sth like
Code:
$ awk -F '-' '{for (i=1;i<NF-2;i++) printf "%s-", $i; printf "%s\n", $(i) }' file

but scutinizer's proposals beat them all!
Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Remove character \r and \n in awk

Hi Everybody: I need your help, please... I have this file *.txt 0000 | 16010201 22000000 67892000 00000000 00000000 00000100 72246681 28E08236 | ~~~~"~~~g~ ~~~~~~~~~~~~~r$f~(~~6 | 0020 | 10476173 90010100 10000000 00000001 05000226 17163011 12442212 48140484 |... (2 Replies)
Discussion started by: solaris21
2 Replies

2. Shell Programming and Scripting

How can I remove first column with awk?

cat input.txt a x b y c z Expected output x y z (11 Replies)
Discussion started by: cola
11 Replies

3. Shell Programming and Scripting

awk remove line

I would like to remove lines with certain pattern but only Estimate: and Realised: in USD and Date: shall be output. The order of the currency are mixed. Output I failed on awk with sub, gensub and was not able to remove the multiple entry on the * Date: (2 Replies)
Discussion started by: sdf
2 Replies

4. Shell Programming and Scripting

awk remove first duplicates

Hi All, I have searched many threads for possible close solution. But I was unable to get simlar scenario. I would like to print all duplicate based on 3rd column except the first occurance. Also would like to print if it is single entry(non-duplicate). i/P file 12 NIL ABD LON 11 NIL ABC... (6 Replies)
Discussion started by: sybadm
6 Replies

5. Shell Programming and Scripting

Awk: Remove Duplicates

I have the following code for removing duplicate records based on fields in inputfile file & moves the duplicate records in duplicates file(1st Awk) & in 2nd awk i fetch the non duplicate entries in inputfile to tmp file and use move to update the original file. Requirement: Can both the awk... (4 Replies)
Discussion started by: siramitsharma
4 Replies

6. Shell Programming and Scripting

can I remove the first char using AWK?

Hi everyone, suppose that I have the following line: #test your knowledge can I use AWK to print the word "test" only? without the #? what should I change to this: awk '{print $1}' thanks in advance guys (2 Replies)
Discussion started by: Abdulelah
2 Replies

7. Shell Programming and Scripting

AWK remove string in between ()

Hi Everyone, 1.txt test here (888_f)a/fff (eeee) test2 (q)--(qq) the output is test here a/fff test2 -- means remove the characters in between (), and () itself. Please advice. Thanks (3 Replies)
Discussion started by: jimmy_y
3 Replies

8. Shell Programming and Scripting

a SED/AWK way to remove everything except...

Hi all, I have a logfile which has lines as following: DOMAIN\username,Deposit,DOMAIN\ServiceAccountName,25/03/2010,00:10,\\SERVER,,,,/Ts=4BAA9BD6,,,10.00,10.03 It's a log of a pcounter print charge system. I need to only have the first part (domain\username) and the second last... (4 Replies)
Discussion started by: necron
4 Replies

9. Shell Programming and Scripting

Remove prefix using awk

Remove prefix using awk File: nawk -F"|" '{if ($1 ~ /^xyz./) print; else { gsub(.*\..*, \..*, $1) ;print }}' file Error: ouput required: (5 Replies)
Discussion started by: pinnacle
5 Replies

10. Shell Programming and Scripting

How to remove ^Z (eof) using sub in awk

I am looking for the substitution expression to remove the eof ^Z character at the end of a file in UNIX. Can anyone help? Thank you ! (2 Replies)
Discussion started by: placroix1
2 Replies
Login or Register to Ask a Question