簡體   English   中英

將 awk 與 gedit 外部工具一起使用

[英]Using awk with gedit external tools

我已經將gedit與 Ubuntu 一起使用了很多,現在在 Macos 上進行轉換。 我注意到 Macos 版本中的一些插件丟失了。 例如,沒有(AFAIK)評論/取消注釋代碼的開箱即用選項。 但是,可以定義一個外部工具來基本上擁有您想要的任何東西。

我只想以 R/python 樣式評論文本選擇(在輸入的每一行之前添加一個# )。 我去了工具 - >管理外部工具並以這種方式定義了一個“評論代碼”工具:

#!/bin/bash
awk '{print "#" $0}'

並將輸入設置為“電流選擇”,將 output 設置為“替換電流選擇”。

如果你 select 一個文本,它就可以工作; 但是,如果您沒有 select 任何東西,它就會永遠停止,因為(據我所知) awk正在等待輸入。

我怎樣才能避免這個問題? 當然,我不需要awk (或其他)解決方案,任何工作都可以。 我不是bash工具的專家,例如awksed ,所以很可能我錯過了一些非常簡單的東西。

請參閱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.

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