有下一个配置文件:
[DEFAULT]
SenderCompID=PB
ConnectionType=acceptor
SocketAcceptPort=4444
FileStorePath=store
FileLogPath=/apps/test
HttpAcceptPort=3333
TransportDataDictionary=../../share/quickfix/FIXT11.xml
AppDataDictionary.FIX.4.0=../../share/quickfix/FIX40.xml
AppDataDictionary.FIX.4.1=../../share/quickfix/FIX41.xml
AppDataDictionary.FIX.4.2=../../share/quickfix/FIX42.xml
AppDataDictionary.FIX.4.3=../../share/quickfix/FIX43.xml
AppDataDictionary.FIX.4.4=../../share/quickfix/FIX44.xml
AppDataDictionary.FIX.5.0=../../share/quickfix/FIX50.xml
AppDataDictionary.FIX.5.0SP1=../../share/quickfix/FIX50SP1.xml
AppDataDictionary.FIX.5.0SP2=../../share/quickfix/FIX50SP2.xml
StartTime=00:00:00
EndTime=23:59:59
StartDay=sun
EndDay=sat
[SESSION]
TargetCompID=TUDOR-TEST
BeginString=FIX.4.4
DataDictionary=../../share/quickfix/FIX44.xml
[SESSION]
TargetCompID=SECOR-TEST
BeginString=FIX.4.4
DataDictionary=../../share/quickfix/FIX44.xml
我想使用sed打印SocketAcceptPort
标记的值,在我的情况下是4444
。
我使用了这个正则表达式,但没有运气:sed 's/SocketAcceptPort=[0-9]+//g' file.cfg
提前谢谢。
答案 0 :(得分:2)
通过sed,
$ sed -n '/^SocketAcceptPort/s/.*=//p' file
4444
它搜索以SocketAcceptPort
开头的行,如果找到,则删除=
符号以外的所有字符。最后剩下的字符被打印出来了。在我们的例子中,它是4444
答案 1 :(得分:0)
如果您想尝试,可以使用awk
执行此操作:
awk -F= '/SocketAcceptPort/ {print $2}' file
4444
答案 2 :(得分:0)
另一个sed
,
sed -n 's/^SocketAcceptPort=\([0-9]\+\).*/\1/p' yourfile
如果-E
中有sed
选项,
sed -En 's/^SocketAcceptPort=([0-9]+).*/\1/p' yourfile