Использование переменных awk для удаления файлов - PullRequest
0 голосов
/ 02 февраля 2012
#!/bin/ksh
grep -v "root" /MCS/usr/dbl/tsk/idle.txt | MESTAID=`awk ' {print $1}'`
grep -e "$MESTAID" MCSTNM.SAV | TTF=`awk ' {print $2}'`

для этого примера скажем $TTF = 123 555 666

Вышеперечисленное получает 3-значный уникальный номер пользователя TTF, который затем необходимо удалить, используя следующий синтаксис: rm /path_to_file/TT123.*

Однако, когда я пытаюсь сделать это в скрипте: rm /path_to_file/TT$TTF.*

Он пытается выполнить следующую команду: rm /path_to_file/TT123 555 666.*

Есть ли способ взять переменную $TTF и запустить ее независимо, например:

rm /path_to_file/TT123.* 
rm /path_to_file/TT555.* 
rm /path_to_file/TT666.*

Надеюсь, мой вопрос ясен, я не программист, это точно. Просто парень, пытающийся написать простой сценарий, чтобы сократить его ежедневный рабочий процесс :) Любая помощь будет оценена.

Ответы [ 2 ]

1 голос
/ 02 февраля 2012

Я бы попробовал:

echo -n $TTF | xargs -n 1 -d ' ' -I '{}' rm '/path/to/file/TT{}.*'

echo(1) с -n запрещает перевод строки в конце.

xargs(1) с -n 1 выполнит одну команду приtime, -d ' ' запрашивает пробел, -I '{}' запрашивает замену {} в начальном аргументе команды стандартными элементами ввода.

Возможно, сначала было бы целесообразно создать несколько небольших тестовых случаевпрежде чем бросить это на место;это сработало на моем простом тестовом примере, но ваш более сложный:

$ touch TT111 TT222 TT333
$ echo -n $TTF | xargs -n 1 -d ' ' -I '{}' rm '/tmp/TT{}'
$ 
0 голосов
/ 02 февраля 2012

Вот упрощенная версия ответа Сарнольда:

for x in $TTF; do rm /path/to/file/TT$x.*; done
...