Можно ли использовать строку в качестве разделителя в команде Unix cut?
если я хочу вырезать список текста, используя строку в качестве разделителя, это возможно? Например, у меня есть каталог, где список скриптов оболочки вызывает тот же скрипт perl 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
когда я читаю man for cut it states
delim может быть многобайтовым символом.
что я делаю / интерпретирую неправильно здесь?
5 ответов
когда я читаю man for cut it states ... 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
попробуйте использовать эту.
$grep abc.pl * | awk -F 'abc.pl' '{print }'
- F fs --field-separator fs используйте fs для входного разделителя полей (значение предопределенной переменной FS).
$ grep abc.pl * / cut-d' ' - f3-999
в этом случае просто используйте символ пробела в качестве разделителя.
или вы можете попробовать, например, Ruby:
grep abc.pl * | ruby -ne 'p $_.chomp.split("abc.pl").last'