linux - 将命令输出保存在保留换行符的字符串变量中

标签 linux bash

我有一个转换文件数据的脚本,为了更有效地工作,我想更改内存中的数据,然后将其转储到文件中。 假设我想修改包含以下内容的文件:

> This is a line
> this is other line

我使用 sed 命令将“>”符号替换为“#”符号:

transform_output=$(eval "sed ${sed_args[@]} $file" 2>&1)
echo -e $transform_output

我得到输出:

# This is a line # this is other line

而不是我想要的输出是:

# This is a line
# this is other line
  1. 如何将输出保存在保留换行符的字符串变量中?
  2. 如何在包含“#ADDED LINE#”的变量开头添加一行并将其保存在文件中?

(我要获取的文件是):

#ADDED LINE#
# This is a line
# this is other line

提前致谢

最佳答案

  1. 引号用于防止在空格处分词:

    echo -e "$transform_output"

  2. 将命令与另一个 echo 组合在一起:

    { echo "#ADDED LINE#"; echo -e "$transform_output"} > 文件

关于linux - 将命令输出保存在保留换行符的字符串变量中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14484466/

相关文章:

bash - 条件语句中continue和冒号的区别

c - Linux 内核模块 - 生成两个具有共享本地 header 的模块

php - 如何每 500 毫秒在 linux 中执行一次代码?

Linux 核心转储太大!

linux - 将今天的日期与 future 的日期进行比较会导致一元运算符错误

Bash bool 测试

ruby - 获取系统调用的错误输出?

java - 系统 getenv() 在 ubuntu 中给出 null,相同的代码在 mac 中工作

linux - 无法在 LAMP 中访问本地主机

linux - 在 bash 中以 dd/mm/yyyy 格式计算到特定日期的总天数