Solved

Help using sed or awk for file edit

Posted on 2007-04-02
8
406 Views
Last Modified: 2010-04-21
Can I ask for some help editting a file using sed or awk?

I have a pipe delimited file with 30 fields per record.

The 30th field contains numbers.

I want to find all the 12 digit numbers that start with a 7, and change them to eleven digit numbers.  Basically I need to remove the leading 7 from the 12 digit numbers so I am left with a 11 digit number in that field.
0
Comment
Question by:roone
  • 5
  • 3
8 Comments
 
LVL 45

Expert Comment

by:Kdo
Comment Utility
Hello roone,

There are several ways to do this.  The easiest sed solution is to assume that the last field is being edited.

Change the ',' to the correct separator, if necessary.  This solution requires that there are no null fields (there are no consecutive separators).


sed 's/,7[0-9]\{11\}$/,&/; s/,,7/,/' myfile

Good Luck,
Kent
0
 

Author Comment

by:roone
Comment Utility
The records are separated by |

OK.
Thanks.
0
 
LVL 45

Expert Comment

by:Kdo
Comment Utility

Make sure to escape the '|' character.   :)

sed 's/\|7[0-9]\{11\}$/\|&/; s/\|\|7/\|/' myfile


0
 

Author Comment

by:roone
Comment Utility
# cat testsed
s/|7[0-9]\{11\}$/|&/; s/||7/|/
#

I made this sed file.  I used it on a test file, and it just removed the numbers starting with 7.

Can you break down the actual expression for me?

I understand the first part "search for a pipe followed by a seven and then 11 other digits"
s/|7[0-9]\{11\}
, right?

But I get lost after the $
0
Find Ransomware Secrets With All-Source Analysis

Ransomware has become a major concern for organizations; its prevalence has grown due to past successes achieved by threat actors. While each ransomware variant is different, we’ve seen some common tactics and trends used among the authors of the malware.

 

Author Comment

by:roone
Comment Utility
Oh, wait.  There are consecutive separators.

But I am definately only touching the last field.

Can't I say, grab the 30th field and then do this substitution?

0
 

Author Comment

by:roone
Comment Utility
# cat trythis
s/\(7\)\([0-9]\{11\}\)/\2/g


This worked for me.

Thanks.


0
 
LVL 45

Accepted Solution

by:
Kdo earned 50 total points
Comment Utility
Hi roone,

You can certainly grab the 30th something.  The script that I provided grabbed the last field, which happens to be the 30th.  :)

I don't know your data very well, but your script doesn't care where the 7........... entry is.  And will change ALL occurences, not just parameter 30.


Kent
0
 

Author Comment

by:roone
Comment Utility
Understood.  Thanks for the help.
0

Featured Post

How to run any project with ease

Manage projects of all sizes how you want. Great for personal to-do lists, project milestones, team priorities and launch plans.
- Combine task lists, docs, spreadsheets, and chat in one
- View and edit from mobile/offline
- Cut down on emails

Join & Write a Comment

FreeBSD on EC2 FreeBSD (https://www.freebsd.org) is a robust Unix-like operating system that has been around for many years. FreeBSD is available on Amazon EC2 through Amazon Machine Images (AMIs) provided by FreeBSD developer and security office…
Why Shell Scripting? Shell scripting is a powerful method of accessing UNIX systems and it is very flexible. Shell scripts are required when we want to execute a sequence of commands in Unix flavored operating systems. “Shell” is the command line i…
Learn several ways to interact with files and get file information from the bash shell. ls lists the contents of a directory: Using the -a flag displays hidden files: Using the -l flag formats the output in a long list: The file command gives us mor…
In a previous video, we went over how to export a DynamoDB table into Amazon S3.  In this video, we show how to load the export from S3 into a DynamoDB table.

744 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question

Need Help in Real-Time?

Connect with top rated Experts

18 Experts available now in Live!

Get 1:1 Help Now