Вот мой входной файл:
/home/sites/default/files/Maple%20board02%2019%2013%20.pdf
/home/sites/default/files/paintgrade/side-view.jpg
/home/sites/default/files/paintgrade/steps_2.jpg
/home/sites/default/files/Front%20sill-photo1.gif
/home/sites/default/files/Rear%20steps%20Feb.%209.2011.pdf
Вот мой оператор grep/awk:
grep /files/ 404s.txt | awk -F '/' '{print $6"/"$7}'
Вывод из этого оператора:
Maple%20board02%2019%2013%20.pdf/
paintgrade/side-view.jpg
paintgrade/steps_2.jpg
Front%20sill-photo1.gif/
Rear%20steps%20Feb.%209.2011.pdf/
(Видите косую черту в конце? Иногда она есть, иногда нет. Иногда нет подкаталога, и мой оператор awk тем не менее печатает «/».)
В другом посте я видел, как убрать косую черту в конце, но не знаю, как применить ее здесь. В сообщении говорилось, что ${1%/}
даст вам строку без косой черты. Сообщение находится здесь. Ответ с наибольшим количеством голосов: target=${1%/}
Я хотел бы добавить что-то к моему оператору grep/awk, чтобы вывод был:
Maple%20board02%2019%2013%20.pdf
paintgrade/side-view.jpg
paintgrade/steps_2.jpg
Front%20sill-photo1.gif
Rear%20steps%20Feb.%209.2011.pdf
Что я могу добавить к исходному заявлению, чтобы результат был таким, как указано выше? Может быть, cut
может помочь, или мой awk
можно настроить так, чтобы он не печатал завершающий «/»?
/home/sites/default/files/
по этим путям? Потому что это окольный способ сделать это. И ваша проблема в том, что иногда имя файла — это поле$6
, а иногда — поле$7
. Когда это поле$7
, вы не получаете завершающую косую черту. Когда это поле$6
, вы получаетеfilename/
, потому что$7
пусто. - person Etan Reisner   schedule 28.10.2014