使用Shell从文本文件中读取所选行
我写了这段代码,希望从seatch.txt中筛选出所选的行。但它似乎不起作用。请帮忙使用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
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代表什么?迄今为止在所有输入文件中读取的记录数。