シェル スクリプトを使用して、txt ファイルの n 行目を取得する必要があります。
私のテキストファイルは
abc
xyz
2行目を取得して変数に格納する必要があります
次のようなコマンドを使用してすべての組み合わせを試しました:
- シード
- おかしい
- 頭
- しっぽ
- 猫
...など
問題は、スクリプトが端末から呼び出されると、これらのコマンドがすべて正常に機能することです。しかし、Java ファイルから同じシェル スクリプトを呼び出すと、これらのコマンドが機能しません。
非対話型シェルと関係があると思います。
助けてください
PS : read コマンドを使用すると、最初の行を変数に格納できます。
read -r i<edit.txt
ここで、「i」は変数で、edit.txt は私の txt ファイルです。
しかし、2行目を取得する方法がわかりません。
前もって感謝します
edit : また、これらの「機能しない」コマンドを使用すると、スクリプトが終了し、残りのコマンドは実行されません。
すでにコマンドを試しました:
i=`awk 'N==2' edit.txt`
i=$(tail -n 1 edit.txt)
i=$(cat edit.txt | awk 'N==2')
i=$(grep "x" edit.txt)
ジャバコード:
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