Linux 如何从文件中的匹配行提取子字符串?
我使用: 获取(“…”)之间的字符串。但是,它给了我这个结果,这是文件的全部内容。如何从中提取“hhgggeee”Linux 如何从文件中的匹配行提取子字符串?,linux,shell,sed,grep,Linux,Shell,Sed,Grep,我使用: 获取(“…”)之间的字符串。但是,它给了我这个结果,这是文件的全部内容。如何从中提取“hhgggeee” cat display.txt | sed -e 's/...\(.*\).../\1/g' 您可以使用perl一行程序来实现以下目的: = New Index: 98:4F:EE:06:0B:03 (BR/EDR,UART,hci0) [hci0] 0.595705 > ACL Data RX: Handle 12 flags 0x02 d
cat display.txt | sed -e 's/...\(.*\).../\1/g'
您可以使用
perl
一行程序来实现以下目的:
= New Index: 98:4F:EE:06:0B:03 (BR/EDR,UART,hci0)
[hci0] 0.595705 > ACL Data RX: Handle 12 flags 0x02 dlen 19
[hci0] 11.420307 Channel: 64 len 15 [PSM 0 mode 0] {chan 0}
1b ef 17 68 68 67 67 67 65 65 65 65 0d 0a 8f
...hhgggeeee... > HCI Event: Mode Change (0x14) plen 6 [hci0] 11.923905
Status: Success (0x00) Handle: 12 Mode: Active (0x00)
Interval: 0.000 msec (0x0000)
对于您的文件,它将输出:
perl -lne 'print $1 if /^\.\.\.(.*)\.\.\./' display.txt
cat dis.txt|grep -o '\.\.\.\([^\.]\+\)\.\.\.'
您可以使用sed命令。尝试下面的命令
hhgggeeee
或者也可以使用grep命令
cat dis.txt|sed -n 's/\.\.\.\([^\.]\+\)\.\.\..*/\1/gp'
两者的输出相同。输出是
你应该在每行代码前加4个空格。
sed的/^.*.[].[.].[.].[.].].]\([^.]*\).$/\1/'文件名
(假设在…hhgggeee…
之前有一个'
)或sed-n'/\..\.\./.\.\./.\.\.\.\.(.*))\.\.\.*/\1/p'display.txt
我得到了正确的一行,我松开了三个我应该剪切字符串的点-n'/\.\.\.\.\../.\.\.\.\.*/\1/p'display.txt这不起作用。我得到了一行包含…字符串。。第二个命令的结果为空
hhgggeeee
$ sed -n 's/.*\.\{3\}\(.*\)\.\{3\}.*/\1/p' file
hhgggeeee