簡體   English   中英

傳遞給sed時解析字符串錯誤缺少命令

[英]parse string error missing command when passing to sed

有人可以解釋如何正確地將變量傳遞給sed並僅返回881 747嗎? 我試過了:

coords=$(xdotool getmouselocation) #x:881 y:747 screen:0 window:56623110
echo $(coords)|sed '/[[:digit:]]/'

失敗的原因有幾個(我都無法弄清楚該如何解決):

  1. 我沒有正確地將內容傳遞給sed
  2. 我的正則表達式不正確。 我也嘗試過: /:[0-9]+\\sy:[0-9]+/ ,但失敗的甚至更糟。 我是否必須運行sed兩次,一次獲取x值,一次獲取y值?

這應該按照您的要求進行。

coords="x:881 y:747 screen:0 window:56623110"
echo ${coords//:/} | sed 's/[[:alpha:]]//g' | awk '{print $1,$2}'

881 747 #output

分解:

  • echo ${coords//:/}被使用bash字符串替換以除去的所有實例:從輸出字符串。

  • sed 's/[[:alpha:]]//g'從輸出中刪除所有[[:alpha:]]字符。

  • awk '{print $1,$2}'打印前兩個字段; 在這種情況下881 747

只能使用awk完成此操作(無需使用sed)。

coords="x:881 y:747 screen:0 window:56623110"
echo $coords | awk -F "[: ]" '{print $2,$4;}'

輸出:

881 747

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM