Попробуйте sort
и uniq
инструменты:
sort -k3,3nr infile |
awk '{ print $1" " $3" " $2 }' |
uniq -f2 | awk '{ print $1" " $3" " $2 }' > outfile
Я не вспоминаю, где я нашел это, но я использую следующее в своем ~/.vimrc
" Set scripts to be executable from the shell
au BufWritePost * if getline(1) =~ "^#!" | if getline(1) =~ "/bin/" | silent !chmod +x <afile> | endif | endif
Команда автоматически устанавливает исполняемый бит, если первая строка запускается с "#!" или содержит "/мусорное ведро /".
Я нашел этот сценарий по http://vim.wikia.com. Не идеальное решение, а приемлемое, я думаю.
function! SetExecutableBit()
let fname = expand("%:p")
checktime
execute "au FileChangedShell " . fname . " :echo"
silent !chmod a+x %
checktime
execute "au! FileChangedShell " . fname
endfunction
command! Xbit call SetExecutableBit()
Можно теперь установить выполнить бит с командой :Xbit
. Весь кредит Max Ischenko по vim.wikia.com
Я использую это в MacVim Custom Version 8.0.648 (134)
" if file is executable just exit
au BufWritePost *.sh if FileExecutable("%") | if getline(1) =~ "^#!" | silent !chmod u+x % | endif | endif
" Determines if file is already executable
function! FileExecutable(fname)
execute "silent! ! test -x" a:fname
return v:shell_error
endfunction
if
в одногоif getline(1) =~ "^#!/bin/"
. Так или иначе это удивительно.Спасибо. – rush 04.06.2012, 16:39au BufWritePost * if getline(1) =~ "^#!" | silent !chmod +x % | endif
– vault 17.02.2016, 16:39/bin
сразу не следует за хижиной, как#!/usr/bin/env
. Путь вокруг этого состоит в том, чтобы, конечно, использовать подстановочный знак:getline(1) =~ "^#!.*/bin/"
. – Harald Nordgren 02.04.2016, 17:47written/bin/bash: endif: command not found /bin/bash: endif: command not found
– StevieD 10.02.2017, 23:36au BufWritePost * if getline(1) =~ "^#!" | if getline(1) =~ "/bin/" | silent execute "!chmod a+x <afile>" | endif | endif
– StevieD 10.02.2017, 23:44