[英]Using awk with gedit external tools
我已經將gedit
與 Ubuntu 一起使用了很多,現在在 Macos 上進行轉換。 我注意到 Macos 版本中的一些插件丟失了。 例如,沒有(AFAIK)評論/取消注釋代碼的開箱即用選項。 但是,可以定義一個外部工具來基本上擁有您想要的任何東西。
我只想以 R/python 樣式評論文本選擇(在輸入的每一行之前添加一個#
)。 我去了工具 - >管理外部工具並以這種方式定義了一個“評論代碼”工具:
#!/bin/bash
awk '{print "#" $0}'
並將輸入設置為“電流選擇”,將 output 設置為“替換電流選擇”。
如果你 select 一個文本,它就可以工作; 但是,如果您沒有 select 任何東西,它就會永遠停止,因為(據我所知) awk
正在等待輸入。
我怎樣才能避免這個問題? 當然,我不需要awk
(或其他)解決方案,任何工作都可以。 我不是bash
工具的專家,例如awk
或sed
,所以很可能我錯過了一些非常簡單的東西。
請參閱https://www.gnu.org/software/gawk/manual/html_node/Read-Timeout.html了解如何使用 GNU Z5E4C8DFA9E20567E2655E847B66 實現讀取超時。
從 stdin 輸入(輸入 7 然后 Enter/Return 然后 Control-D):
$ gawk 'BEGIN{PROCINFO["-", "READ_TIMEOUT"]=5000} {print "#" $0}'
7
#7
或來自 pipe 的輸入:
$ seq 2 | gawk 'BEGIN{PROCINFO["-", "READ_TIMEOUT"]=5000} {print "#" $0}'
#1
#2
或從文件中:
$ seq 2 > file
$ gawk 'BEGIN{PROCINFO["-", "READ_TIMEOUT"]=5000} {print "#" $0}' file
#1
#2
但如果您不提供任何輸入並等待 5 秒:
$ gawk 'BEGIN{PROCINFO["-", "READ_TIMEOUT"]=5000} {print "#" $0}'
gawk: cmd. line:1: fatal: error reading input file `-': Connection timed out
$
如果您不想看到超時消息,您可以隨時以通常的方式重定向 stderr:
$ gawk 'BEGIN{PROCINFO["-", "READ_TIMEOUT"]=5000} {print "#" $0}' 2>/dev/null
$
但當然這會掩蓋所有錯誤消息,因此您可能想要這樣做而不是僅掩蓋一條消息:
{ gawk 'BEGIN{PROCINFO["-", "READ_TIMEOUT"]=5000} {print "#" $0}' 2>&1 >&3 |
grep -v 'fatal: error reading input file'; } 3>&1
例如:
$ { gawk 'BEGIN{print "other error" >"/dev/stderr";
PROCINFO["-", "READ_TIMEOUT"]=5000} {print "#" $0}' 2>&1 >&3 |
grep -v 'fatal: error reading input file'; } 3>&1
other error
$
顯然將5000
更改為您希望腳本等待輸入的毫秒數。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.