2009-05-13 5 views
11

Если я хочу вырезать список текста, используя строку в качестве разделителя, возможно ли это? Например, у меня есть каталог, где список скриптов, называют же PERL скрипт сказатьМожно ли использовать строку в качестве разделителя в команде unix cut?

abc.pl 

Так что, когда я

$grep abc.pl * 

в этом каталоге, это дает мне следующие результаты

xyz.sh: abc.pl 1 2 
xyz2.sh: abc.pl 2 
mno.sh: abc.pl 3 
pqr.sh: abc.pl 4 5 

В основном я хочу, чтобы все выходные после «abc.pl» (чтобы проверить, какие аргументы диапазона передаются perl прямо сейчас)

Когда я попытался

$grep abc.pl * | cut -d'abc.pl' -f2 

ИЛИ

$grep abc.pl * | cut -d'abc\.pl' -f2 

его давая мне

cut: invalid delimiter 

Когда я прочитал человека для вырезания говорится

DELIM может быть мульти- байтовый символ.

Что я здесь делаю/интерпретирую неправильно?

+0

жаль форматирования Lemme корректных несколько строк выше, так что они имеют смысл ... это дает мне следующие результаты xyz.sh: а.пл 1 2 xyz2.sh: abc.pl 2 mno.sh: abc.pl 3 pqr.sh: abc.pl 4 5 ... Когда я попытался $ Grep abc.pl * | cut -d'abc.pl '-f2 OR $ grep abc.pl * | сократить -d'abc.pl»-F2 его давая мне сократить: недопустимый разделитель ... Надеются новые линии работают в этот раз :) –

+0

Нету :(не знает, почему его не показывая новые строки, как вошли :( –

+0

Вы имеете в виду страницы с примерами использования ZERO, которые не дали понять? – Chance

ответ

6

Когда я читаю человека для разреза, он утверждает, что delim может быть многобайтовым символом.

Многобайтовый, но только один символ, а не строка.

canti:~$ ll | cut --delimiter="delim" -f 1,2 
cut: the delimiter must be a single character 
Try `cut --help' for more information. 

canti:~$ cut --version 
cut (GNU coreutils) 5.97 

Можно указать только выходной разделитель в виде строки (бесполезные в данном случае):

--output-delimiter=STRING               
     use STRING as the output delimiter the default is to use the input delimiter 
+0

Спасибо Alex .... –

5

Почему бы не использовать grep abc.pl | awk '{print $3, $4}'?

+0

не работает так, как я ожидаю, чтобы он показывал результаты. Его показ неполного списка ... также любопытно, что случилось с тем, как я использую вырезать? –

+0

Я никогда не использовал вырезать. Твоя задача кричит о awk или perl! – alamar

+0

Прохладный ... Спасибо alamar ... однако я дам правильный ответ на ответ Алекса, так как он действительно ответил, что я смотрю Мне хотелось бы выбрать два ответа ... но тогда это вызовет много других проблем. Так спасибо за вашу помощь. Очень ценю это :) –

0

$ Grep abc.pl * | cut -d '' -f3-999

В этом случае просто используйте символ пробела в качестве разделителя.

+1

Не нужно включать '999' - просто сделайте' cut -d '' - f3-'. – jnylen

0

Или вы можете попробовать, например, рубин:

grep abc.pl * | ruby -ne 'p $_.chomp.split("abc.pl").last' 
3

Попробуйте использовать это.

$grep abc.pl * | awk -F 'abc.pl' '{print $2}' 

-F фс --field-сепаратор фс Использование фс для поля ввода разделителя (значение предопределенной переменной FS).