在脚本中使用SED -n和变量

时间:2015-07-13 01:27:45

标签: macos bash sed terminal var

我正在尝试在脚本中使用sed但它仍然失败。他们自己的命令似乎有效,所以我不确定我做错了什么:

这是OS X中的终端(bash)

注意:file1.txt包含多行文本

N=1
sed -n $Np < file1.txt > file2.txt
CONTENT=$(cat file2.txt)
echo $CONTENT

如果我将$ N更改为1,则效果很好

sed -n 1p <file1.txt >file2.txt
CONTENT=$(cat file2.txt)
echo $CONTENT

给了我

content of file2.txt

所以基本上,我试图将文件的第1行的文本复制到文件的第2行的开头......如果第2行还没有以第1行的内容开头。

4 个答案:

答案 0 :(得分:3)

shell不知道您想要$N而不是$Np

执行此操作:${N}p

答案 1 :(得分:2)

变化:

sed -n $Np < file1.txt > file2.txt

sed -n ${N}p < file1.txt > file2.txt

您的代码不知道变量Np是什么......

答案 2 :(得分:0)

由于N是一个整数,我最终使用了以下内容。

sed -n `expr $N`p < file1 > file2

这也允许我使用

获取文件中的下一行
sed -n `expr $N+1`p < file1 > file2

感谢您的帮助!!!

答案 3 :(得分:-1)

您应该使用>>进行追加重定向。 >会覆盖原始文件。

How to append the output to a file?