Zenity
如何獲取 Zenity 選定項目的行號
有人可以告訴我如何計算所選項目的行號。我希望有特定的行號來引用將處理不同文件的同一行的子常式。
#! /bin/bash item=$(zenity --list "Apples" "Peaches" "Pumpkin" "Pie" \ --column="Select your choice" --text="Text above column(s)" --title="My menu") linenumber=x # Formula to calculate the line number of the selected item here echo "You selected: $item which is in line number: $linenumber"
所需的輸出是:
You selected Peaches which is in line number: 2
更新:
這是讀取的項目的範例。我使用上面腳本中的水果來說明一個線條範例。這是特定項目的範例。如您所見,一些實際文本是重複的,但在不同的行上。當使用者選擇一個項目時,我希望Zenity有一個選項來顯示點擊了哪一行。每次執行時,它都會有不同的項目列表。
cairo-dock Desktop XdndCollectionWindowImp unity-launcher unity-panel unity-panel unity-dash Hud Your turn - Play esskwa003 in HneO9CtF • lichess.org - Google Chrome ljames@ubunzeus ljames@ubuntuserver ljames@hera5 site site ljames@ubunzeus launcher - Add Unity Entry for Locally Installed Program - Ask Ubuntu - Google Chrome ljames@ubunzeus eclipse desktop launcher categories - Google Search - Google Chrome launcher - Add Unity Entry for Locally Installed Program - Ask Ubuntu - Google Chrome eclipse MightyText - Google Chrome launcher - Add Unity Entry for Locally Installed Program - Ask Ubuntu - Google Chrome ljames@ubunzeus Inbox - L. D. James - Mozilla Thunderbird ljames@hera5 ljames@hera5 ljames@ubunzeus ljames@hera5 How to get the line number of a Zenity selected Item - Unix & Linux Stack Exchange - Google Chrome workspace - MyPyDev - ShellTools/SEWork/SEWork/hkrecord.sh - Eclipse - /home/users/l/j/ljames/workspace email - Mozilla Thunderbird command line - Is it possible to control the recording if Audacity is running in the background? - Ask Ubuntu - Google Chrome Bookmark Manager - Google Chrome Formatting Sandbox - Meta Stack Exchange - Google Chrome Apollo III Support - Backing up the Office Computer - Mozilla Thunderbird
這是我呼叫上述數據的確切塊:
#!/bin/bash INPUT=$HOME/infile.txt # IFS=$'\n' item=$(while read l do echo "$l" done <$INPUT|zenity --list --text "sample text " --column "Choose") echo "You selected: [$item] which is in line number: [$linenumber"]
這對我有用 yad 和 zenity,並且列 ID 在 GUI 中不可見:
zenity --list 1 "Apples" 2 "Peaches" 3 "Pumpkin" 4 "Pie" --column="id" \ --column="Select your choice" --hide-column=1 --print-column=1
awk
現在,為了在輸入是文件時實現相同的效果,您可以使用eg預處理文件
awk '{print NR};1' infile
並將結果傳遞給zenity
.因為,根據文件:
Zenity 將所選行的第一列文本中的條目返回到標準輸出。
您
$item
將只儲存行號。(這是第一列中的條目),而不是行內容。要獲取行內容,您必須再次處理文件並根據行號提取該行。所以
linenumber=$(awk '{print NR};1' infile | zenity --list --column="No" \ --column="Select your choice" --text="Text above column(s)" \ --title="My menu" --hide-column=1)
然後
linecontent=$(sed ${linenumber}'!d;q' infile)
因此,現在您將所選行的編號及其內容分別保存到
linenumber
和 中linecontent
。