作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我想使用 sed
或任何命令行工具通过 shell 命令的输出替换部分行。例如:
date
sed
似乎最合适,因为它也允许匹配模式并重新格式化其他内容,例如移动匹配位,但不是强制性的。
echo "timestamp = 1234567890" | sed "s/timestamp = \(.*\)/timestamp = $(date -u --d @\1 "+%Y-%m-%d %T")/g"
$(...)
这个东西是行不通的。据我了解,这是针对环境变量的。
sed
吗?我花了几个小时搜索......
sed
甚至能够做到这一点吗?还有其他更适合的工具吗?
awk '{$3
... 最佳答案
要在 sed
中运行外部命令,您需要使用 e
。看一个例子:
$ echo "timestamp = 1234567890" | sed "s#timestamp = \(.*\)#date -u --d @\1 "\+\%Y"#e"
2009
$ sed "s#timestamp = \(.*\)#echo timestamp; date -u --d @\1 '\+\%Y-\%m-\%d \%T'#e" <<< "timestamp = 1234567890"
timestamp
2009-02-13 23:31:30
+%Y
格式。
man sed
:
e
This command allows one to pipe input from a shell command into pattern space. If a substitution was made, the command that is found in pattern space is executed and pattern space is replaced with its output. A trailing newline is suppressed; results are undefined if the command to be executed contains a nul character. This is a GNU sed extension.
while
循环来获取值,然后正常使用
date
。例如,如果文件是这样的:
timestamp = 1234567890
while IFS="=" read -r a b
do
echo "$b"
done < file
$b
作为时间戳,然后您可以执行
date ...
。
关于perl - 如何用 sed、awk 等的 shell 命令的输出替换子字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27823959/
我是一名优秀的程序员,十分优秀!