[英]Best way to cut up some shell output?
以下是命令cvt 1280 760
的輸出。 我需要提取后的第二個一切"
來的線在我的shell腳本的下一行使用結束。什么是這樣做的最好方法是什么?
# 1280x760 59.91 Hz (CVT) hsync: 47.33 kHz; pclk: 78.75 MHz
Modeline "1280x760_60.00" 78.75 1280 1344 1472 1664 760 763 773 790 -hsync +vsync
你可以使用sed。
sed -n 's/^[^"]*"[^"]*"[[:blank:]]*//p' file
或者grep
grep -oP '^[^"]*"[^"]*"\s*\K.*' file
你可以這樣做(在stdin
上stdin
):
grep \" | cut -d\" -f3-
grep \\" |
- 只有行"
-d\\"
- "
是你的分隔符 -f3-
- 你想要第3個字段及其后的所有內容 對於您的file
:
<file grep \" | cut -d\" -f3-
它輸出:
78.75 1280 1344 1472 1664 760 763 773 790 -hsync +vsync
使用awk
可能會起作用:
awk -F'"[ ]+' '{print $2}' file
使用-F
+ "(one or more spaces)
充當字段分隔符。
用bash:
while IFS='"' read field1 field2 rest; do
# do something with "$rest"
echo "$rest";
done < <( cvt 1280 760 )
最后一行是來自進程替換的重定向。
使用Bash模式匹配 :
#!/bin/bash
s='Modeline "1280x760_60.00" 78.75 1280 1344 1472 1664 760 763 773 790 -hsync +vsync'
pat='[^"]*"[^"]*"(.*)'
[[ $s =~ $pat ]]
echo "${BASH_REMATCH[1]}"
輸出:
78.75 1280 1344 1472 1664 760 763 773 790 -hsync +vsync
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.