私の設定ファイルには次の行があります。
bindsym $mod+F2 exec gnome-terminal #Open terminal
bindsym $mod+p exec command /some/path" #Popup Dictionary
bindsym $mod+Mod1+l exec --no-startup-id /some/path/command #Dmenu for my books collection
bindsym Mod1+Control+b exec rxvt -e nnn #nnn file browser
awk
2番目の列もリスト#
したいですawk
。
awk '/bindsym/{print $2}' filename
それを取得する方法がわからない#
。
好ましい出力は、キーの後にコメントテキストが続くことです。
$mod+F2 Open terminal
ベストアンサー1
$ awk -v OFS='\t' '/^bindsym/ { key = $2; sub(".*#", ""); print key, $0 }' file
$mod+F2 Open terminal
$mod+p Popup Dictionary
$mod+Mod1+l Dmenu for my books collection
Mod1+Control+b nnn file browser
awk
これは最初に各行の2番目のフィールドをbindsym
変数として抽出するために使用されますkey
。次に、#
その行(対応する行を含む)の前のすべての項目を削除し、key
タブを区切り文字として使用して行の残りの部分を印刷します。
代替出力形式:
$ awk '/^bindsym/ { key = $2; sub(".*#", ""); printf("%-20s\t%-20s\n", key, $0) }' file
$mod+F2 Open terminal
$mod+p Popup Dictionary
$mod+Mod1+l Dmenu for my books collection
Mod1+Control+b nnn file browser
ロジックは同じですが、出力では2つの(左揃え)フィールドのそれぞれに20文字を割り当て、それらの間にタブ文字を配置します(良い測定のため)。