在Bash

时间:2017-02-05 12:39:07

标签: bash awk sed

如何在Modeline之后的单词之后提取文字。

我有一个字符串,

mdline = 1600x900 59.95 Hz (CVT 1.44M9) hsync: 55.99 kHz; pclk: 118.25 MHz Modeline "1600x900_60.00" 118.25 1600 1696 1856 2112 900 903 908 934 -hsync +vsync

,即cvt命令的典型输出,我想在“Modeline”之后获取文本。

3 个答案:

答案 0 :(得分:2)

其他变体

$ awk -F'Modeline ' '{print $2}' file

$ sed 's/.*Modeline //' file

答案 1 :(得分:1)

使用sed,使用反向引用:

$ sed 's/.*Modeline\(.*\)/\1/' <<< 'mdline = 1600x900 59.95 Hz (CVT 1.44M9) hsync: 55.99 kHz; pclk: 118.25 MHz Modeline "1600x900_60.00" 118.25 1600 1696 1856 2112 900 903 908 934 -hsync +vsync'
 "1600x900_60.00" 118.25 1600 1696 1856 2112 900 903 908 934 -hsync +vsync

答案 2 :(得分:1)

使用bash参数扩展

string='mdline = 1600x900 59.95 Hz (CVT 1.44M9) hsync: 55.99 kHz; pclk: 118.25 MHz Modeline "1600x900_60.00" 118.25 1600 1696 1856 2112 900 903 908 934 -hsync +vsync'

printf "%s\n" "${string#*Modeline }"
"1600x900_60.00" 118.25 1600 1696 1856 2112 900 903 908 934 -hsync +vsync