2013-05-03 2 views
1

Мне нужно некоторое руководство, управляющее текстовым файлом, являющимся результатом diff. Мне нужны только те результаты, которые указаны после разделителя> (имена файлов), а затем я добавлю путь к имени файла для дальнейшей работы. Я не имею дело с большими файлами. Я надеюсь сделать все это на месте.Манипулирование файлом - bash

По сути, я хочу, чтобы взять что-то вроде этого

 
96a97,98 
> SCR-33333.sql 
> SCR-33333-WEB.sql 

и создать действие, как

cp /add/this/path/SCR-33333.sql /to/somewhere/else

Может кто-нибудь пожалуйста, дайте мне быстрый пример, я могу работать с?

ответ

1
grep ">" dummy.txt | cut -f 2 -d ' ' | xargs -I{} cp /add/this/path/{} somewhere 

где 'dummy.txt' - ваш файл diff.

+0

Лучше использовать 'cut -c3-' для 'cut' часть – Kevin

+1

Пример Sashang отлично работает. Спасибо большое! – MoBarger

2

Ну, вы могли бы попробовать это, имея в виду, что она будет работать, только если имена файлов не содержит пробелы ...

diff this that | awk '/^>/{print "/add/this/path/" $2}' | xargs -i cp {} /to/somewhere/else

(примечание:. Это команда однострочник игнорировать обертка, вызванная веб-браузером.)

+0

Я не думаю, что конкретный вызов 'xargs' будет делать то, что желательно ... – twalberg

+0

OOPS. Спасибо что подметил это. И, исправлено. –

Смежные вопросы