?
Solved

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

Posted on 2013-06-14
16
Medium Priority
?
548 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
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 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
Quick Start: DOCKER

Sometimes you just need a Quick Start on a topic in order to begin using it.. this is just what you need to know to get up and running with Docker!

 
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 2000 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

Visualize your virtual and backup environments

Create well-organized and polished visualizations of your virtual and backup environments when planning VMware vSphere, Microsoft Hyper-V or Veeam deployments. It helps you to gain better visibility and valuable business insights.

Question has a verified solution.

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

Background Still having to process all these year-end "csv" files received from all these sources (including Government entities), sometimes we have the need to examine the contents due to data error, etc... As a "Unix" shop, our only readily …
Recently, an awarded photographer, Selina De Maeyer (http://www.selinademaeyer.com/), completed a photo shoot of a beautiful event (http://www.sintjacobantwerpen.be/verslag-en-fotoreportage-van-de-sacramentsprocessie-door-antwerpen#thumbnails) in An…
Connecting to an Amazon Linux EC2 Instance from Windows Using PuTTY.
In a recent question (https://www.experts-exchange.com/questions/29004105/Run-AutoHotkey-script-directly-from-Notepad.html) here at Experts Exchange, a member asked how to run an AutoHotkey script (.AHK) directly from Notepad++ (aka NPP). This video…
Suggested Courses
Course of the Month9 days, 5 hours left to enroll

764 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