egrep
+awk
:
egrep -Hrn 'StockID|SellPrice'./backup | awk -F ':' '$2==1{print $1}'
Так как вы используетеbash
:
eval $'alias df5=df\ndf5 -h'
$'...'
является "строкой C", и bash
расширит \n
внутри нее до буквального символа новой строки, прежде чем передать его в eval
.
Необходимо соблюдать осторожность, так как другие последовательности обратной косой черты также могут быть расширены. См. вторую половину раздела QUOTING
в руководстве bash
.
Есть несколько решений, но все они должны основываться на идее написания новой строки другими символами. Первое возможное решение, переносимое (очень старое )— получить новую строку внутри переменной:
nl='
'
eval 'alias df5=df'"$nl"'df5 -h'
Назначение явной новой строки переменной может выглядеть странно, в этом случае мы можем использовать:
Ansi -C цитирует (ksh,bash,zsh):
nl=$'\n'
printf (большинство оболочек):
eval "$(printf "nl='\n'")"
Но тогда эти две идеи могут быть использованы непосредственно для определения псевдонима:
eval $'alias df5=df\ndf5 -h'
eval "$(printf "alias 'df5=df\ndf5 -h'")"
Но, конечно, вы можете забыть о новой строке и определить псевдоним как:
alias df5=df && df -h
Но я не уверен, что это подходит для вашего варианта использования.:-)