-1

我写了这段代码,想从 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
4

2 回答 2

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
于 2012-11-23T02:40:41.073 回答
1

如果您想要包含 $NUM 的行,那么它是:

grep "$NUM" file

如果您想要在第一个分号之前正好有 $NUM 的行,它是:

grep "^$NUM;" file

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

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

如果您想要其他内容,请告诉我们什么并发布一些预期的输出以配合您发布的示例输入。

于 2012-11-23T04:13:34.730 回答