Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/meteor/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用Shell从文本文件中读取所选行_Shell_Sed - Fatal编程技术网

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

使用Shell从文本文件中读取所选行,shell,sed,Shell,Sed,我写了这段代码,希望从seatch.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,C

我写了这段代码,希望从seatch.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

现在还不清楚你到底想完成什么。如果您试图打印出现
$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
44;,A1,D4,E2,C3,A2
如果要传递行号,请尝试:

NUM=4
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
44;,A1,D4,E2,C3,A2

如果需要包含$NUM的行,则它是:

grep "$NUM" file
awk -v num="$NUM" 'NR==num' file
如果您希望在第一个分号前有一行正好是$NUM,则它是:

grep "^$NUM;" file
如果您想要行号$NUM,那么它是:

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

如果您还需要其他内容,请告诉我们需要什么,并发布一些与您发布的示例输入相关的预期输出。

显然不需要echo`sed…`,只是
sed-n…
。祝你好运。请原谅我的问题,NR代表什么?迄今为止在所有输入文件中读取的记录数。