История изменений
Исправление Zmicier, (текущая версия) :
В таблице в втором столбце есть http://ex.ua/films/vo_125.txt Как сделать grep и записать только vo_125.txt в третий столбец?
Вам не нужно «делать grep
». Вы же ГНУ Баш изучаете, а не ненормальное программирование, верно?
То есть мне построчно нужно скопировать все что начинается с vo_ до .txt в 3-ий столбец
А не последний элемент пути взять, не?
Ладно, поскольку вы не осилили написать ни строчки, надо полагать, что лекцию, где это рассказывалось, вы прогуляли. Так что спрашивать, что вы там проходили, вас бесполезно.
Поэтому попробую предположить, что это задание на ровно один, самый базовый, прием построчной обработки текстового потока — на разбиение строки по разделителю.
Вы сообщили противоречивую информацию о том, какой разделитель между собственно полями: сказали CSV, а в примере ни одной запятой. Ну положим, что они там должны быть:
$ cat binster.in
/home/scripts/1.xm,http://ex.ua/films/vo_125.txt
/home/scripts/2.xm,http://ex.ua/films/vo_126.txt
/home/scripts/3.xm,http://ex.ua/films/vo_129.txt
Тогда в простейшем случае нужно что-то такое:
#!/bin/bash
while IFS=',' read -r xm uri; do
printf "%s,%s,%s\n" "$xm" "$uri" "${uri##*/}"
done
Но возможно от вас ожидают именно разбиения строки на элементы:
#!/bin/bash
while IFS=',' read -r xm uri; do
IFS='/' read -ra uri_split <<< "$uri"
printf "%s,%s,%s\n" "$xm" "$uri" "${uri_split[-1]}"
done
Исправление Zmicier, :
В таблице в втором столбце есть http://ex.ua/films/vo_125.txt Как сделать grep и записать только vo_125.txt в третий столбец?
Вам не нужно «делать grep
». Вы же ГНУ Баш изучаете, а не ненормальное программирование, верно?
То есть мне построчно нужно скопировать все что начинается с vo_ до .txt в 3-ий столбец
А не последний элемент пути взять, не?
Ладно, поскольку вы не осилили написать ни строчки, надо полагать, что лекцию, где это рассказывалось, вы прогуляли.
Попробую предположить, что это задание на ровно один, самый базовый, прием построчной обработки текстового потока — на разбиение строки по разделителю.
Вы сообщили противоречивую информацию о том, какой разделитель между собственно полями: сказали CSV, а в примере ни одной запятой. Ну положим, что они там должны быть:
$ cat binster.in
/home/scripts/1.xm,http://ex.ua/films/vo_125.txt
/home/scripts/2.xm,http://ex.ua/films/vo_126.txt
/home/scripts/3.xm,http://ex.ua/films/vo_129.txt
Тогда в простейшем случае нужно что-то такое:
#!/bin/bash
while IFS=',' read -r xm uri; do
printf "%s,%s,%s\n" "$xm" "$uri" "${uri##*/}"
done
Но возможно от вас ожидают именно разбиения строки на элементы:
#!/bin/bash
while IFS=',' read -r xm uri; do
IFS='/' read -ra uri_split <<< "$uri"
printf "%s,%s,%s\n" "$xm" "$uri" "${uri_split[-1]}"
done
Исходная версия Zmicier, :
В таблице в втором столбце есть http://ex.ua/films/vo_125.txt Как сделать grep и записать только vo_125.txt в третий столбец?
Вам не нужно «делать grep
». Вы же ГНУ Баш изучаете, а не ненормальное программирование, верно?
То есть мне построчно нужно скопировать все что начинается с vo_ до .txt в 3-ий столбец
А не последний элемент пути взять, не?
Ладно, поскольку вы не осилили написать ни строчки, надо полагать, что лекцию, где это рассказывалось, вы прогуляли.
Попробую предположить, что это задание на ровно один, самый базовый, прием построчной обработки текстового потока — на разбиение строки по разделителю.
Вы сообщили противоречивую информацию о том, какой разделитель между собственно полями: сказали CSV, а в примере ни одной запятой. Ну положим, что они там должны быть:
$ cat binster.in
/home/scripts/1.xm,http://ex.ua/films/vo_125.txt
/home/scripts/2.xm,http://ex.ua/films/vo_126.txt
/home/scripts/3.xm,http://ex.ua/films/vo_129.txt
Тогда в простейшем случае нудно что-то такое:
#!/bin/bash
while IFS=',' read -r xm uri; do
printf "%s,%s,%s\n" "$xm" "$uri" "${uri##*/}"
done