Solved

remove quotes from beginning and end of file using sed or awk

Posted on 2013-06-14
16
513 Views
Last Modified: 2013-06-14
Greetings,
I have a freetext.txt file that has like 4000 characters.
There are double quotes (") throughout the document.

To include one in the front, and one in the end.

I want to remove the one in the front and the one in the end.
I heard sed and awk are good for things like this...

I'm still learning those two...
does anyone have experience in this?
Thanks.
0
Comment
Question by:Evan Cutler
  • 5
  • 4
  • 3
  • +2
16 Comments
 
LVL 15

Expert Comment

by:Ess Kay
ID: 39248014
try regular expression?
0
 
LVL 9

Author Comment

by:Evan Cutler
ID: 39248031
in a bash?
0
 
LVL 15

Expert Comment

by:Ess Kay
ID: 39248039
0
NFR key for Veeam Backup for Microsoft Office 365

Veeam is happy to provide a free NFR license (for 1 year, up to 10 users). This license allows for the non‑production use of Veeam Backup for Microsoft Office 365 in your home lab without any feature limitations.

 
LVL 31

Expert Comment

by:farzanj
ID: 39248043
You can easily do it with sed but you have to give a sample of what you really mean
0
 
LVL 15

Expert Comment

by:Ess Kay
ID: 39248044
0
 
LVL 9

Author Comment

by:Evan Cutler
ID: 39248049
my text files are different each time, but below is something that I would have in it.

"This is the "good times"; and this is the "bad times"."

I want the quotes at the beginning and the end to be removed, but quotes at "good times" and "bad times" to remain.
0
 
LVL 31

Expert Comment

by:farzanj
ID: 39248053
You can do it like

sed -i 's/^"//' filename

will remove " at the beginning of line
0
 
LVL 9

Author Comment

by:Evan Cutler
ID: 39248081
that's awesome farzanj,
can you do that for both ends at the same time?

Or a repeatable thing that will overwrite the original filename?
Thanks
0
 

Expert Comment

by:brianash
ID: 39248188
sed -i 's/^"\(.*\)"$/\1/' filename

The ^" matches the first quote
The \(.*\) matches the body of the text you want to keep
The "$ matches the quote at the end of the line

Using -i with sed makes it replace the content in the original file.

This is for files that are all on one line.  
"this is the "good times"; and this is the "bad times"."

It won't work if your file is like this:
"this is the "good times"; and thi
s is the "bad times"."

Do you need one that works with multi-lines?
0
 
LVL 9

Author Comment

by:Evan Cutler
ID: 39248209
yes...I expect my files to come in with CRLFs in there as well...
Thank you so much.
0
 
LVL 31

Accepted Solution

by:
farzanj earned 500 total points
ID: 39248279
For both ends:

sed -i 's/^"//";s/"$//' filename

Open in new window

0
 
LVL 9

Author Closing Comment

by:Evan Cutler
ID: 39248288
Thank you my friend.
you are awesome.

Most appreciated.

Evan
0
 

Expert Comment

by:brianash
ID: 39248315
It doesn't work, though.
I don't think sed is going to work for you, I think you need awk.
i couldn't get farzanj's solution to run, but even so, it would remove the quote at the beginning and end of each line in a file, rather that the first quote at the beginning of the file and the one at the end of the file.
If you have input:
"This is "a test"
and "more lines"."

you would end up with:
This is "a test
and "more lines".

missing the quote after the word, test

The result I think you are looking for is
This is "a test"
and "more lines".

Which his solution (or mine) does not give.
I think you need awk.  I will work on something for you.
0
 
LVL 31

Expert Comment

by:farzanj
ID: 39248328
You are welcome Evan.

In case you want to remove any " you could use.

sed -i 's/"//g' filename

Open in new window


Hope it helps.  Cheers!
0
 
LVL 19

Expert Comment

by:simon3270
ID: 39248332
One tiny tweak - this will remove double quotes at the start and end of other lines, e.g. the " at the end of the first line in:
"This is the "good"
this is the "bad"."

Open in new window

if you really only want the " at the start of the first line, and the " at the end of the last, to be removed, use:
sed -i '1s/^"//;$s/"$//' file

Open in new window

0
 

Expert Comment

by:brianash
ID: 39248351
Nice work, simon3270
0

Featured Post

Master Your Team's Linux and Cloud Stack!

The average business loses $13.5M per year to ineffective training (per 1,000 employees). Keep ahead of the competition and combine in-person quality with online cost and flexibility by training with Linux Academy.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Suggested Solutions

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…
I. Introduction There's an interesting discussion going on now in an Experts Exchange Group — Attachments with no extension (http://www.experts-exchange.com/discussions/210281/Attachments-with-no-extension.html). This reminded me of questions tha…
Learn how to get help with Linux/Unix bash shell commands. Use help to read help documents for built in bash shell commands.: Use man to interface with the online reference manuals for shell commands.: Use man to search man pages for unknown command…
Connecting to an Amazon Linux EC2 Instance from Windows Using PuTTY.

837 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