2015-07-13 52 views
1

我想在脚本中使用sed,但它保持失败。对自己的命令似乎工作,所以我不知道我做错了:在脚本中使用SED -n与变量

这是在终端的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号线已经不具有行的内容开始1

回答

3

外壳不知道你想$N而不是$Np

这样做:${N}p

2

变化:

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

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

你的代码有什么线索变量Np是...

0

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

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

这也让我使用

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

感谢您的帮助,以获得在一个文件中的下一行!

+0

这并没有利用你提供的答案中提供的任何建议。使用'expr $ N'是过量的。如果你想获得'N + 1',你可以使用Bash语法:'$((N + 1))'。 – paddy