我想将命令输出传递给特定位置的某个文件。
我们将命令命名为 com ,输出为:
auto -> 123
beta -> 456
something -> 789
如何将其传递给文件:
.........
blablabla
auto
beta
something
blablabla
.........
像这样:
.........
blablabla
auto = 123
beta = 456
something = 789
blablabla
.........
如何在终端的一行上进行:(仅为结构示例)
ubuntu@ubuntu:~$ com > file
什么是优雅的方式? (sed,awk,我不知道)
答案 0 :(得分:1)
com
创建脚本文件
来自man sed
-f script-file, --file=script-file
add the contents of script-file to the commands to be executed
以这种格式制作节目输出规则
s/auto/& = 123/
s/beta/& = 456/
s/something/& = 789/
如果您已在auto -> 123
上修复,则可以使用
com | sed -r 's#(\S+) -> (.*)#s/\1/\& = \2/#'
然后你可以用它作为
com | sed -f- file
或
com | sed -r 's#(\S+) -> (.*)#s/\1/\& = \2/#' | sed -f- file
答案 1 :(得分:0)
我会直接使用awk和echo。 例如:
存储在output.log中的命令输出:
a -> 123
b -> 456
c -> 789
可能的单行解决方案:
echo "$(cat output.log | head -1 | awk '{print $1}') = $(cat output.log | head -1 | awk '{print $3}')"
哪个应该导致“a = 123”。
如果你知道output.log中项目的确切位置,这是有效的。
您甚至可以设置一个while循环来自动读取整个文件。