Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux 如何用评估结果替换部分文本_Linux_Bash - Fatal编程技术网

Linux 如何用评估结果替换部分文本

Linux 如何用评估结果替换部分文本,linux,bash,Linux,Bash,我想用date--date=“some str”+%s的结果替换字符串中出现的每个@(some str)。其中'some str'可以是按原样传递给--date参数的任何内容。请注意,我希望支持多个@()实例 例如,字符串从@(-1周)到@(-1天)应该从1435830929到1436349343变为。如果我在一周内对它进行评估,它应该是从1436435800到1436954213的,,你期待这样的结果吗 #!/bin/bash str="@2147483647 some other stri

我想用
date--date=“some str”+%s
的结果替换字符串中出现的每个
@(some str)
。其中'some str'可以是按原样传递给--date参数的任何内容。请注意,我希望支持多个
@()
实例


例如,字符串
从@(-1周)到@(-1天)
应该从1435830929到1436349343变为
。如果我在一周内对它进行评估,它应该是从1436435800到1436954213的
,你期待这样的结果吗

#!/bin/bash

str="@2147483647 some other string @2147483647"
from="@2147483647"
to="$(date --date @2147483647)"

echo ${str//$from/$to}

基本上:

sed -r 's|@\(([^)]*)\)|$(date +%s --date "now\1")|g; s|.*|echo "&"|e' <<< input_string

sed-r的|@\([^)]*)\ |$(date+%s——date“now\1”)| g;如果我想用其他东西替换常量字符串,我就不需要编写脚本。我只需要计算其他值,然后写一个新的常量字符串