2015-07-13 51 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