我正在尝试在脚本中使用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行的内容开头。
答案 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)
您应该使用>>
进行追加重定向。 >
会覆盖原始文件。