File edit with awk or sed


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting File edit with awk or sed
# 1  
Old 05-05-2009
File edit with awk or sed

I have the follwoing file:
This looks to be : seperated.
For the first field i want only the file name without ".txt" and also i want to remove "+" sign if the second field starts with "+" sign.

Input file:
Quote:
user/unixfiles/files.txt:+ABC::::::::
user/guest/files.txt:def::::::::
user/files.txt:ghi::::::::
user/priority/files.txt:+jkl::::::::
Output file:
Quote:
files:ABC::::::::
files:def::::::::
files:ghi::::::::
files.txt:jkl::::::::
Appreciate your help
# 2  
Old 05-05-2009
Code:
awk -F ":" '{gsub(/.*\//,"",$1);gsub(/\..*/,"",$1);gsub(/\+/,"",$2);printf("%s:%s",$1,$2);for(i=3;i<=NF;i++)printf("%s:", $i);printf "\n"}' OFS=":" filename

This can be optimized..I am feeling sleepy now Smilie

cheers,
Devaraj Takhellambam
# 3  
Old 05-05-2009
Quote:
Originally Posted by devtakh
Code:
awk -F ":" '{gsub(/.*\//,"",$1);gsub(/\..*/,"",$1);gsub(/\+/,"",$2);printf("%s:%s",$1,$2);for(i=3;i<=NF;i++)printf("%s:", $i);printf "\n"}' OFS=":" filename

This can be optimized..I am feeling sleepy now Smilie

cheers,
Devaraj Takhellambam

Sir,

The following error:
awk: syntax error near line 1
awk: bailing out near line 1
This User Gave Thanks to pinnacle For This Post:
# 4  
Old 05-05-2009
If on Solaris, use /usr/bin/nawk or /usr/xpg4/bin/awk
This User Gave Thanks to vgersh99 For This Post:
# 5  
Old 05-05-2009
Quote:
Originally Posted by vgersh99
If on Solaris, use /usr/bin/nawk or /usr/xpg4/bin/awk
Thanks vgersh99

Can you please optimize this
Code:
nawk -F ":" '{gsub(/.*\//,"",$1);gsub(/\..*/,"",$1);gsub(/\+/,"",$2);printf("%s:%s",$1,$2);for(i=3;i<=NF;i++)printf("%s:", $i);printf "\n"}' OFS=":" outputfile2

# 6  
Old 05-05-2009
Alternatively:

Code:
$
$ cat input.txt
user/unixfiles/files.txt:+ABC::::::::
user/guest/files.txt:def::::::::
user/files.txt:ghi::::::::
user/priority/files.txt:+jkl::::::::
$
$ perl -ne '{/(^.*\/)(.*?)(.txt:)[+]*(.*)$/ && print $2,":",$4,"\n"}' input.txt
files:ABC::::::::
files:def::::::::
files:ghi::::::::
files:jkl::::::::
$
$

tyler_durden
# 7  
Old 05-05-2009
not much improvement, but:
Code:
nawk -F: '{n=split($1,a,"[/.]"); gsub("[+]", "",$2); printf("%s%c%s",a[n-1], OFS,$2); for(i=3;i<=NF;i++) printf("%s%c", $i, (i==NF)?ORS:OFS) }' OFS=: myFile

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. Shell Programming and Scripting

Bash script - add/edit to file and save - sed?

I'm working on a script to execute a number of items. One being, editing particular files to add certain lines. I'm attempting to utilize sed, but, having issues when running from a bash script. Assistance is greatly appreciated. My example: sed -i '14 i\ # add these lines add these lines to... (5 Replies)
Discussion started by: Nvizn
5 Replies

2. Shell Programming and Scripting

SED/AWK to edit/add field values in a record

Hi Experts, I am new to shell scripting. Need some help in doing one task given by the customer. The sample record in a file is as follows: 3538,,,,,,ID,ID1,,,,,,,,,,, It needs to be the following: 3538,,353800,353800,,,ID,ID1,,,,,COLX,,,,,COLY, And i want to modify this record in... (3 Replies)
Discussion started by: sugarcane
3 Replies

3. Shell Programming and Scripting

Edit a file using awk ?

Hey guys, I'm trying to learn a bit of awk/sed and I'm using different sites to learn it from, and i think I'm starting to get confused (doesn't take much!). Anyway, say I have a csv file which has something along the lines of the following in it:"test","127.0.0.1","startup... (6 Replies)
Discussion started by: jimbob01
6 Replies

4. Shell Programming and Scripting

Inline edit using sed / awk

Hi, I have file with all the lines as following format <namebindings:StringNameSpaceBinding xmi:id="StringNameSpaceBinding" name="ENV_CONFIG_PATH" nameInNameSpace="COMP/HOD/MYSTR/BACKOFFICE/ENV_CONFIG_PATH" stringToBind="test"/> I want to replace (all the lines) value of... (8 Replies)
Discussion started by: shuklaa02
8 Replies

5. Shell Programming and Scripting

edit field using sed or awk

please help me to edit the second field using awk or sed i have input file below aa1001 000001 bb1002 000002 cc1003 000003 so i want the output file like below aa1001 01 bb1002 02 cc1003 03 (38 Replies)
Discussion started by: zulabc
38 Replies

6. Shell Programming and Scripting

what is the switch to let sed edit and save file

I remember there is a sed switch i can use to edit and save the file at the same time, but i cannot recall it at all. so instead of -> sed 's/A/B/' file > file-tmp -> mv file-tmp file what can i do to just let sed edit and save the "file" (4 Replies)
Discussion started by: fedora
4 Replies

7. Shell Programming and Scripting

Sed or Awk or both to edit file

What is an efficient way to remove all lines from the input file which contain a file name? inputfile: ======================= # comment # comment # comment 5 8 10 /tmp 5 8 10 /var/run 5 8 10 /etc/vfstab 5 8 9 /var/tmp 5 8 10 /var/adm/messages... (7 Replies)
Discussion started by: Arsenalman
7 Replies

8. Shell Programming and Scripting

edit entire column from a fixed-width file using awk or sed

Col1 Col2 Col3 Col4 12 Completed 08 0830 12 In Progress 09 0829 11 For F U 07 0828 Considering the file above, how could i replace the third column the most efficient way? The actual file size is almost 1G. I am... (10 Replies)
Discussion started by: tamahomekarasu
10 Replies

9. Shell Programming and Scripting

sed / awk - inplace or inline edit

I need to remove the '&' from a file. In each line of the file, the fields are separated by ^K. I only want to remove '&' if it exists in field number 9. (example of field 9: abc&xyz) I need to do an in place/in line edit. So far I have accomplished the following: awk -F '^K' '{print... (6 Replies)
Discussion started by: hemangjani
6 Replies

10. UNIX for Dummies Questions & Answers

edit file using sed (not create another!)

Hi, I generally use Perl for this ex. perl -e 's/pattern/replace/g' -p -i <filename> I did something like this.. find . -type f -exec perl -e 's/pattern/replace/g' -p -i {} \; I want to do this with "sed" but what I get is the output being printed on the screen.. i can do sed... (3 Replies)
Discussion started by: oldtrash
3 Replies
Login or Register to Ask a Question