[Last Call] Learn about multicloud storage options and how to improve your company's cloud strategy. Register Now

x
?
Solved

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

Posted on 2013-06-14
16
Medium Priority
?
569 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
Independent Software Vendors: We Want Your Opinion

We value your feedback.

Take our survey and automatically be enter to win anyone of the following:
Yeti Cooler, Amazon eGift Card, and Movie eGift Card!

 
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 20

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

VIDEO: THE CONCERTO CLOUD FOR HEALTHCARE

Modern healthcare requires a modern cloud. View this brief video to understand how the Concerto Cloud for Healthcare can help your organization.

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 …
In part one, we reviewed the prerequisites required for installing SQL Server vNext. In this part we will explore how to install Microsoft's SQL Server on Ubuntu 16.04.
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…
Learn how to navigate the file tree with the shell. Use pwd to print the current working directory: Use ls to list a directory's contents: Use cd to change to a new directory: Use wildcards instead of typing out long directory names: Use ../ to move…
Suggested Courses

656 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