Linux / Unix: Sed Substitute Multiple Patterns [ Find & Replace ]

by on January 20, 2012 · 4 comments· LAST UPDATED January 20, 2012


I'm using the date +'%D_%T' to store Unix system date and time in a shell variable called $_now:

_now="$(date +'%D_%T')"
echo $_now


I'd like to replace / and : with _. I'm aware of the following sed command:

sed 's/\//_/g
> s/:/_/g' <<<"$_now"


How do I specify two pattern within the same sed command to replace | and : with _ so that I can get output as 01_20_12_16_10_42?

You can use any one of the following sed substitute find and replace multiple patterns:

sed -e 's/Find/Replace/g' -e 's/Find/Replace/g' <<<"$var"
sed -e 's/Find/Replace/g' -e 's/Find/Replace/g' < inputFile > outputFile
out=$(sed -e 's/Find/Replace/g' -e 's/Find/Replace/g' <<<"$var")


sed 's/Find/Replace/g;s/Find/Replace/g' <<<"$var"
sed -e 's/Find/Replace/g;s/Find/Replace/g' <<<"$var"
sed -e 's/Find/Replace/g;s/Find/Replace/g' < inputFile > outputFile
out=$(sed -e 's/Find/Replace/g;s/Find/Replace/g' <<<"$var")

Examples: Find And Replace Sed Substitute Using a Singe Command Line

_now="$(sed -e 's/\//_/g;s/:/_/g' <<<$(date +'%D_%T'))"
echo $_now

Sample outputs:


Here is another version:

_now=$(sed 's/[\/:]/_/g' <<<$(date +'%D_%T'))
echo "$_now"

Sample outputs:

Tweet itFacebook itG+ itDownload PDF versionFound an error/typo on this page?

{ 4 comments… read them below or add one }

1 sylvainulg January 23, 2012 at 10:10 am

Alternatively, one could tell `date` the desired format, like date +%Y-%m-%d-%H-%M


2 LOL LOLSKI December 21, 2012 at 4:11 pm

Just do:

now=`date +”%m_%d_%y_%H_%M_%S”`
echo $now


3 gabriel April 1, 2013 at 3:52 pm

Man was showing sed not date command…


4 Panna November 25, 2014 at 4:04 pm

I have a not well experience with awk and sed. if any find the solution?
I have a two variable like..
a-fdfgh3 ##here two word in one column and may you can say in row
$var2=a-45afd4 string1 string2 string3 string4
a-fdfgh3 string1 string2 string3 string4
a-hfdj3e string1 string2 string3 string4
a-jkkl3l string1 string2 string3 string4

i want to find $var1 data in $var2 and the output should be
Example: a-45afd4 string1 string2 string3 string4
a-fdfgh3 string1 string2 string3 string4

##rest all column row should not come


Leave a Comment

Tagged as: , , , , , , ,

Previous Faq:

Next Faq: