将文本文件输出添加到其他文件之前

将文本文件输出添加到其他文件之前

我想将一个文件 ( ) 的数据添加到文件夹中的random.txt另一组文件 ( ) 中。real.txt

举个例子:

$ cat random
some text

$ cat real.txt
sample text

如果我运行以下命令:

$ sed i.old '1s;^;some text\n;' real.txt

$ cat real.txt
some text

sample text

该命令将 file 的文本添加random到 file 中real.txt,但 的内容random不固定。是否可以random将的内容重定向到real.txt

我尝试了以下命令:

$ sed -i.old "1s;^;$(cat random)\n;" real.txt

$ cat real.txt

给出输出:

some text
sample text

当我的随机文件收到以“/*”开头的txt时,就会出现问题。它显示以下错误:

$ cat real.txt
/*new text
 new line*/
$sed -i.old "1s;^;$(cat random)\n;" real.txt
 sed: -e expression #1, char 16: unterminated `s' command

答案1

sed具体解决为什么你的语法不起作用的问题,单引号内不会发生进程替换。

这个语法对我有用:

sed -i.old "1s;^;$(cat random)\\
;" filename

如果您使用 GNU sed,这也可以工作:

sed -i.old "1s;^;$(cat random)\n;" filename

在进行编辑并专注于 GNU 时sed,我想到了两种解决方案:

1) 避免内部random麻烦的语法sed。在您的具体情况下,这是在文件内使用文字换行符。

代替:

/* line1 
   line2 */

将换行符(在第 1 行末尾)编码为\n

/* line1\n   line2 */

random(第 2 行末尾)的最后一个换行符是已经\n按照命令行中的方式编码sed

2) 放弃就地编辑sed并使用“ cat-and- mv”方法:

for f in filename; do
    mv $f $f.old
    cat random $f.old > $f
done

相关内容