Это один из тех немногих случаев, когда утилита переименования
из набора util-linux подходит для решения этой задачи. Большинство дистрибутивов поставляют эту утилиту в виде переименования
; в Debian, Ubuntu и производных переименование
является другой, более мощной утилитой , а утилита util-linux называется rename.ul
.
rename 'Garbage ' '' *.txt
Полностью переносимое решение -
for x in *.txt; do
mv -- "$x" "${x#'Garbage '}"
done
Я не совсем уверен, что понял суть вашего вопроса.
Сначала: IFS - это переменная, содержащая разделитель, вроде табуляции, пробела или чего-то еще. По умолчанию она содержит пробел, табуляцию и новую строку.
РЕДАКТИРОВАНИЕ:
от for
-петли до while
-петли, предложенной тердоном
while read line
do
echo $line|cut -d\: -f2
done < /path/to/file.csv
Это генерирует этот вывод:
blala
blala
***.***.**.**
Вы можете сделать это и с петлей времени, лично мне просто больше нравится петля for-loop здесь.
Что делает петля? Сначала цикл читает первую строку файла.csv и сохраняет ее в переменную "line".
Внутри цикла мы повторяем переменную $line и разрезаем ее на пейсы. Обрезаем ее разделителем (-d) ":", потому что в файле.csv между идентификатором и значением всегда есть ":". С помощью поле-индикатора (-f) мы хотим показать нам только поле 2 (-f2). Петля for-loop заканчивается, когда в файле.csv больше нет строк.
Дополнительную информацию смотрите в man-странице cut(1).
Это может быть заманчиво использовать EVAL
, но в качестве паролей могут содержать арбитражные символы (которые могут быть выполнены в качестве кода, он делает его рискованным; гранича - и-просто: «Не делай этого!».
Это работает - используя массивы.
Содержание тестового файла
User:blala
Pass:blala with spaces: and colons: and $PATH
IP:***.***.**.**
set -f # disable globbing
IFS=$'\n' # 'word' split only at newline char
value=($(sed 's/:/\n./' file)) # '.' to cater for empty value fields
echo user="${value[1]/./}"
echo pass="${value[3]/./}"
echo ip="${value[5]/./}"
Вывод:
user=blala
pass=blala with spaces: and colons: and $PATH
ip=***.***.**.**