Принять ввод через пользователя, чтобы выполнить команду last и cut.

Я хочу предложить пользователю вырезать из «последней» команды вместе с тем, какие столбцы вырезать. Я также хочу использовать «tr», чтобы исправить всю разницу в пробелах. Это код, который у меня есть:

echo -n "What rows and columns would you like to cut: "
read num_int
read num_row
read num_list
last $num_int
cut -f $num_row
tr -d $num_list

Когда я запускаю его из командной строки, я получаю подсказку, поэтому я нажимаю Enter, а затем ввожу число, которое нужно вырезать. Затем я снова нажимаю Enter и получаю список информации, которая выводится на экран, но не вырывается из исполняемого скрипта. Есть ли лучший способ настроить этот скрипт? Вот некоторые примеры данных того, что он выводит на экран:

slater   pts/2        78.189.121.247   Sat Sep  1 23:21 - 23:27  (00:05)    
slater   pts/3        77.189.121.247   Sat Sep  1 23:09 - 23:21  (00:12)    
slater   pts/2        76.189.121.247   Sat Sep  1 22:59 - 23:09  (00:10)    
slater   pts/2        74.189.121.247   Sat Sep  1 22:51 - 22:56  (00:05)    
pint     pts/2        74.189.121.247   Sat Sep  1 22:49 - 22:51  (00:01)    
terry    pts/2        74-119-247-134.r Sat Sep  1 19:08 - 19:09  (00:00)    

person demet8    schedule 22.10.2012    source источник
comment
Как вы хотите, чтобы результат выглядел? Можете ли вы привести пример?   -  person John Kugelman    schedule 23.10.2012


Ответы (2)


Соответствует ли это вашим потребностям?

read -p "What row and column integers would you like to cut >>> " col row
 last | awk -v col=$col -v row=$row 'NR==row{print $col}'
person Gilles Quenot    schedule 22.10.2012
comment
Это то, что я ищу. Я должен был использовать awk в первую очередь. Спасибо. - person demet8; 23.10.2012

Я не совсем понимаю, что ты пытаешься здесь сделать. Но я почти уверен, что вы хотите передать эти команды друг другу, чтобы они работали с выводом друг друга:

last | cut -f $num_row | tr -d $num_list

last $num_int вероятно не делает то, что вы хотите. last ожидает имена пользователей в качестве аргументов. Чтобы получить последние $num_int строки вывода, попробуйте tail (или, может быть, head):

last | tail -n $num_int | cut -f $num_row | tr -d $num_list

Команда tr меня особенно смущает. Что вы пытаетесь с этим сделать?

person John Kugelman    schedule 22.10.2012
comment
Я просто хочу избавиться от непечатаемых символов с помощью «tr». - person demet8; 23.10.2012