Можно ли использовать строку в качестве разделителя в команде unix cut?
Если я хочу вырезать список текста с использованием строки в качестве разделителя, возможно ли это?
Например, у меня есть каталог, в котором список сценариев оболочки вызывает тот же perl script say
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 может быть многобайтовым символом.
Что я делаю/интерпретирую здесь неправильно?
Ответы
Ответ 1
Когда я читаю человека для вырезания, он указывает... 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
Ответ 2
почему бы не использовать grep abc.pl | awk '{print $3, $4}'
?
Ответ 3
Попробуйте использовать это.
$grep abc.pl * | awk -F 'abc.pl' '{print $2}'
-F fs
--field-separator fs Используйте fs для разделителя полей ввода (значение предопределенной переменной FS).
Ответ 4
$grep abc.pl * | cut -d '' -f3-999
В этом случае просто используйте символ пробела как разделитель.
Ответ 5
Или вы можете попробовать например Ruby:
grep abc.pl * | ruby -ne 'p $_.chomp.split("abc.pl").last'