我需要使用shell腳本獲取txt文件的第n行。使用非交互式shell腳本獲取文本文件的第n行
我的文本文件就像
abc
xyz
我需要獲取二號線,並將其存儲在一個變量
我一直在使用類似的命令嘗試了所有組合:
- 的sed
- awk
- head
- 尾
- 貓
...等
問題是,當腳本被稱爲從終端,所有這些命令做工精細。 但是當我從我的java文件調用相同的shell腳本時,這些命令不起作用。
我想,它與非交互式shell有關。
請幫
PS:使用讀命令我能夠第一線存儲在一個變量。
read -r i<edit.txt
這裏「i」是變量,edit.txt是我的txt文件。
但我無法弄清楚,如何獲得第二條線。
在此先感謝
編輯: 還腳本退出,當我使用這些「非工作」命令,將不執行剩餘的命令。
已經嘗試命令:
i=`awk 'N==2' edit.txt`
i=$(tail -n 1 edit.txt)
i=$(cat edit.txt | awk 'N==2')
i=$(grep "x" edit.txt)
Java代碼:
try
{
ProcessBuilder pb = new ProcessBuilder("./myScript.sh",someParam);
pb.environment().put("PATH", "OtherPath");
Process p = pb.start();
InputStreamReader isr = new InputStreamReader(p.getInputStream());
BufferedReader br = new BufferedReader(isr);
String line ;
while((line = br.readLine()) != null)
System.out.println(line);
int exitVal = p.waitFor();
}catch(Exception e)
{ e.printStackTrace(); }
}
myscript.sh
read -r i<edit.txt
echo "session is : "$i #this prints abc, as required.
resFile=$(echo `sed -n '2p' edit.txt`) #this ans other similar commands donot do anything.
echo "file path is : "$resFile
可能的重複:http://stackoverflow.com/questions/6022384/bash-tool-to-get-nth-line-from-a-file – SuperSaiyan
我試過他的命令,它在終端中運行良好。但不是當從java程序調用腳本時。 – Singh