Вдохновленный комментарием jordanm к ответу Bichoy, вот то, как можно иметь дело с именами файлов с пробелами в них:
count=50
i=1
while [ $i -le $count ]
do
read filename
tar --null -no-recursion -ruf abc.tar "$filename" --directory=/tmp/temp
i=$(($i+1))
done <abc.txt
Я использовал a while
цикл вместо выполнения for i in {1..50}
чтобы позволить Вам мягкому коду количество требуемых строк.
Обратите внимание, что одинарные кавычки заканчиваются до [115092] "$len"[115093], чтобы вставить длину поля, а затем они продолжаются.
EDIT (спасибо @dave_thompson_085 за более элегантное решение):
где последнее [115094]1[115095] означает true, а пустое действие означает [115096]{печать}[115097].[114654].
ProxyPreserveHost On ProxyPass / http://192.168.111.2/ ProxyPassReverse / http://192.168.111.2/ ServerName win.example.com
Если максимальная длина вашего первого столбца станет 3 вместо 2, то вы можете сделать так:
Или, если вы хотите сделать все это динамическим и добавить столько нулей, сколько необходимо, в зависимости от самого длинного значения в первом столбце, вы можете использовать это [115090]awk[115091]:То же самое, но расширить до нескольких строк для удобочитаемости, с комментариями:
awk '{if (length ($2)>max) max=length($2)} END {print max}' filename
Приведенная выше команда отображает длину самого длинного имени столбца (, т. е. $2=2-й столбец)