Linux/Unix:Sed替代多种模式[查找和替换]

时间:2020-01-09 10:40:40  来源:igfitidea点击:

我使用日期+%D_%T将Unix系统的日期和时间存储在名为$_now的shell变量中:

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

如何用_替换/和:?
我知道以下sed命令:

sed s/\//_/g > s/:/_/g

如何在同一sed命令中指定两个模式来替换|和:与_以便我可以输出为01_20_12_16_10_42?您可以使用以下任何一种sed替代查找并替换多个模式:

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")

示例:使用Singe命令行查找和替换Sed替代

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

输出示例:

01_20_12_16_22_21

这是另一个版本:

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

输出示例:

01_20_12_16_24_42