我在/tmp/text
Trying 127.0.0.1...
Connected to 127.0.0.1.
Escape character is '^]'.
telnet> show counter
5737
telnet> exit
并尝试获取该行中单独出现的数字5737
,并在正则表达式中匹配^[0-9]*$
。那是我的sed
cat /tmp/text | sed -En 's/(^[0-9]*$)/\1/p'
但它什么都不匹配,任何想法都错了?
答案 0 :(得分:1)
sed-expression对我来说很好看。 Telnet可能会输出(可能不可见)^ M-newlines,导致表达式无效。你可以试试
cat /tmp/text | sed -En 's/(^[0-9]+(^M)?$)/\1/p'
然后按Ctrl + V然后按Ctrl + M创建^ M.这是我能想到的唯一解释。
答案 1 :(得分:0)
使用awk:
$ awk '/telnet> show counter/{l=1;next}l==1{print;exit}' file
也许你正在以错误的方式做事,这个命令是你所期望的吗? :
nc 127.0.0.1 <YOUR_OWN_PORT> <<< 'show counter'
(使用nc)
答案 2 :(得分:0)
这对你的情况来说已经足够了。
$ sed -n '/^[0-9]\+$/p' file
5737
它只打印具有一个或多个数字的行。由于您输入的文件包含空行,sed -n '/^[0-9]*$/p' file
也会打印空白行。 *
重复前一个标记零次或多次,+
重复前一个标记一次或多次。