2012-01-26 3 views
2

Я работаю с командной строки SVN. Исходя из TortoiseSVN на Windows, я нашел, что это очень утомительно каждый раз, когда я пытаюсь выбрать один конкретный файл, чтобы вернуться, диф, фиксации, и т.д., когда путь очень длинный, как это:Команда Unix для удаления части строки

src/com/company/stuff/platform/appname/subpackage/subsubpackage/Foo.java 

Если я хочу сделать дифф на этот файл, я должен ввести все это:

svn diff src/com/company/stuff/platform/appname/subpackage/subsubpackage/Foo.java 

так, я стараюсь Grep, что, делая это:

svn st | grep Foo 

Но он возвращает:

M  src/com/company/stuff/platform/appname/subpackage/subsubpackage/Foo.java 

Теперь, как отключить часть «M», чтобы я мог получить только путь к файлу?

ответ

1

Для этого я использовал бы awk:

svn st | awk '/Foo/ { print $2 ; }' 

awk принимает сценарии с , соответствующие инструкциям и блоки кода для выполнения на строках, которые соответствуют. Это соответствует строкам с Foo и печатает второе поле. (Использовать полевой разделитель по умолчанию FS, который должен разделяться на вкладки и пробелы.)

Вы также должны изучить возможности завершения заполнения вашего корпуса; большинство новых оболочек включают возможность заполнения частично типизированных имен файлов. Для вашего длинного примера:

src/com/company/stuff/platform/appname/subpackage/subsubpackage/Foo.java 

Я бы, наверное, типа это так:

src/com/com<tab>/stuff/pla<tab>/appn<tab>/subp<tab>/subsub<tab>/Foo<tab> 

Вам может понадобиться набрать больше или меньше в зависимости от того, какие файлы находятся в ваших каталогах.

+0

Я сделал вкладки, и это тоже утомительно. type-tab-slash-type-tab-slash -... Ваше решение кажется самым элегантным. Нет grep. – atedja

1
svn st | grep Foo | sed 's/^[A-Z]\s*//' 
+0

После игры с sed я придумал 'sed 's /. * // '', который также работает с незастроенными файлами ('? '). – atedja

+0

@alnite Не забудьте поставить символ '^', чтобы сказать 'sed', что только посмотрите на это в начале строки. –

1

Если 'СВН сть всегда возвращает (нежелательный) первый столбец, а затем путь, попробуйте следующее:

svn st | grep Foo | awk '{print $2}' 
+0

это выглядит как более чистый способ. – atedja

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