Для этого нет стандартного места. Стандартный способ сделать что-то состоит в том, что у вас должны быть привилегии для установки программы в том месте, где ее будут запускать другие пользователи.
Это ваш выбор между поддеревом /usr/local
, например /usr/local/users/bin
, подкаталогом /home
, например /home/shared/bin
, подкаталогом /opt
, например /opt/users/bin
, и т. д.
Используйте путь, оканчивающийся на /bin
. Это делает более очевидным, что он предназначен для исполняемой программы, и позволяет вам помещать другие вещи в одноуровневые каталоги, такие как библиотеки,документация и файлы данных, используемые этими программами.
Если все, что вы хотите сделать, это удалить только «(цифры )» в конце строки:
sed 's|\(^.*\) ([[:digit:]]*)$|\1|g' test.txt
даст вам:
Metabolism # this header I need to keep
Global and overview maps # this header I need to keep
01100 Metabolic pathways
01110 Biosynthesis of secondary metabolites
01120 Microbial metabolism in diverse environments
С GNU sed:
sed -e '1,2{p;d}' -e 's/ /;"/' -e 's/ ([[:digit:]]\+)$/"/' input
или более совместимые:
sed -e '1{p;d;}' -e '2{p;d;}' -e 's/ /;"/' -e 's/ ([[:digit:]]\{1,\})$/"/' input
Использование GNU sed
в расширенном режиме регулярных выражений -E
, где мы идентифицируем строки заголовков как те, которые не заканчиваются числами в квадратных скобках. Предполагая:
sed -Ee '
/\s\(([0-9]+)\)$/!s/.*/;"&";/;t
s//";\1/;s/\s/;"/
' file
;"Metabolism";
;"Global and overview maps";
01100;"Metabolic pathways";1689
01110;"Biosynthesis of secondary metabolites";677
01120;"Microbial metabolism in diverse environments";356
perl -lpe '
s/\s\K\((\d+)\)$/$1/ ?
s/\s(.*)\s/;"$1";/ :
s/(.*)/;"$1";/ ;
' file
Используя perl
мы могли бы сделать следующее (те же предположения, что и выше ).
perl -slane 'local($a,$b);
($a,$b) = (shift(@F),pop(@F))
if /\s\(\d+\)$/;
print $a, qq("@F"), $b =~ tr/()//dr;
' -- -,=\; file
awk '
$NF ~ /^\([0-9]+)$/ &&
p = match($0,/.* /) {
l = length($NF)
mid = substr($0, p, RLENGTH)
gsub(/^ | $/, "\"", mid)
print $1, mid, substr($NF, 2, l-2)
}
!p&&(sub(/.*/, ";\"&\";")||1)
' OFS=\; file