tcsh
не имеют функций вообще; таким образом, это - отрицание. Общая стратегия состоит в том, чтобы создать отдельный сценарий и вызов, что как внешняя программа (для некоторых вещей, как псевдоним
, источник
будет также работать).
ну, это не действительно вопрос; я могу подтвердить, что ваши наблюдения корректны :-) Добавление COMP_POINT
не могло бы быть трудным хотя; на самом деле вот патч (который является НЕ протестирован очень хорошо):
разность - мерзавец i/tc.const.c w/tc.const.c
индекс c472acc. 1a69fee 100644
---i/tc.const.c
+++ w/tc.const.c
@@-469,6 +469,8 @@ символьный STRPROGRAM_ENVIRONMENT [] = {'P', 'R', 'O', 'G', 'R', 'M',
#endif/* _OSD_POSIX */
Символьный STRCOMMAND_LINE [] = {'C', 'O', 'M', 'M', 'N', 'D', '_', 'L', 'я',
'N', 'E', '\0'};
+Char STRCOMP_POINT [] = {'C', 'O', 'M', 'P', '_', 'P', 'O', 'я', 'N', 'T',
+ '\0' };
#ifdef WARP
Символьный STRwarp [] = {'w', 'r', 'p', '\0'};
разность - мерзавец i/tw.comp.c w/tw.comp.c
индекс 03da837. 101962f 100644
---i/tw.comp.c
+++ w/tw.comp.c
@@-635,9 +635,12 @@ tw_complete (Символ константы *строка, Символ ** слово, Символ ** кусочек, международный взгляд, eChar *suf)
значение по умолчанию:
аварийное прекращение работы ();/* не Может произойти */
}
+
tsetenv (STRCOMMAND_LINE, строка);
+ tsetenv (STRCOMP_POINT, str2short (xasprintf (" %d", (символьный) CursorH)));
разрешение = tw_result (com, кусочек);
Unsetenv (STRCOMMAND_LINE);
+ Unsetenv (STRCOMP_POINT);
cleanup_until (buf);
возвратить разрешение;
}
Вы, вероятно, хотите поднять это на tcsh mailinglist, все же.
Общая awk
альтернатива:
awk '
/^uid:/ {
uid=$2
}
/^homeDirectory:/ {
if ($NF !~ uid"$") { $NF = $NF"/"uid }
}
{ print }
' text.file
Эта awk
версия сохранит записи, которые уже имеют идентификатор пользователя как часть homeDirectory:
awk -F ": *" '
$1=="uid" { uid = $2 }
$1=="homeDirectory" && $2=="/home/myworker/2013" { $0=$0"/"uid }
{ print }
' infile > outfile
(Примечание: в ваших данных не должно быть трейлинговых пространств. Чтобы очистить это также можно добавить команду { gsub(/ +$/, "", $2 }
] в качестве первой команды программы awk
)
awk Файл:
$1=="uid" { uid=substr($2,2) ; }
$1=="homeDirectory" { printf "%s: /home/myworker/2013/%s\n",$1,uid ; next ;}
{ print ;}
, который
Быть вызвать с
awk -F: -f tmp.awk < yourinputfile
где
-F:
Использование: в качестве сепаратора -F TMP.awk
Используйте файл awk