2012-11-23 86 views
-1

我已經編寫了此代碼,希望從seating.txt中篩選出選定的行。但它似乎並不奏效。請幫忙!使用Shell從文本文件中讀取選定的行

echo `sed -n "/$NUM/p" seating.txt` 

文件如下:

29;,A2,A3,A1,E2,B1,B2,C1,C3,C2,D1,D2,D3,E1,E3,A4,E4,B3,B4,C4,D4 
29;,A1,A2,A3,A4,B2,E4,C3,B3,D3,D2,E1,E2,C2,B4,C4,D4,C1,D1,E3,B1 
43;,A2,D4,C3,B3,A4,E4 
44;,A1,D4,E2,C3,A2 
44;,A1,B2,C3,D4,A4 
+0

沒有明顯需要echo \ sed ... \,只是'sed -n ...'。祝你好運。 – shellter

回答

1

如果你想包含$ NUM行則是:

grep "$NUM" file 

如果你想第一個分號它之前究竟$ NUM行:

grep "^$NUM;" file 

如果你想行號$ NUM則是:

awk -v num="$NUM" 'NR==num' file 

如果你想要別的東西,告訴我們什麼,併發布一些預期產出和你一起去張貼樣本輸入。

+0

請原諒我的問題,但NR代表什麼? –

+0

**所有輸入文件中至今都已讀取** R **個字符。 –

3

目前尚不清楚你要完成什麼。如果你想的地方$NUM出現打印線,你的代碼工作正常:

NUM=29 
sed -n "/^$NUM/p" file 

結果:

29;,A2,A3,A1,E2,B1,B2,C1,C3,C2,D1,D2,D3,E1,E3,A4,E4,B3,B4,C4,D4 
29;,A1,A2,A3,A4,B2,E4,C3,B3,D3,D2,E1,E2,C2,B4,C4,D4,C1,D1,E3,B1 

如果你想試圖通過行號,請嘗試:

NUM=4 
sed -n "$NUM{p}" file 

結果:

44;,A1,D4,E2,C3,A2