使用Shell从文本文件中读取选定的行

时间:2012-11-23 02:25:53

标签: shell sed

我已经编写了这段代码,希望从seat.txt筛出选定的行。但它似乎没有用。请帮忙!

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

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:1)

如果你想要一个包含$ NUM的行,那就是:

grep "$NUM" file

如果你想要在第一个分号之前有一个完全$ NUM的行:

grep "^$NUM;" file

如果您想要行号$ NUM,那么它是:

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

如果你想要别的东西,请告诉我们什么,并发布一些预期的输出与你发布的样本输入一起。