Ошибка Bash - вырезано: разделитель должен состоять из одного символа (при попытке использовать "/")
Я пытаюсь использовать косую черту в качестве разделителя, но я получаю сообщение об ошибке:
вырезать: разделитель должен состоять из одного символа
Это моя команда:
cat index.html |grep “href=“ |cut -d”/“ -f3 |more
1 ответ
Я подозреваю, что вы вставляете туда двойные кавычки с высоким ascii (причудливый юникод).
Для сравнения:
$ echo cut -d”/“ | hexdump -C
00000000 63 75 74 20 2d 64 e2 80 9d 2f e2 80 9c 0a |cut -d.../....|
0000000e
$ echo cut -d"/" | hexdump -C
00000000 63 75 74 20 2d 64 2f 0a |cut -d/.|
00000008
2f
это (прямая) косая черта, что все, что вы хотите cut
чтобы увидеть его -d
аргумент. Обратите внимание, что во втором выражении bash вообще не отправляет фактические двойные кавычки в команду, что является вашей целью.
e2 80 9d 2f e2 80 9c
является e2 80 9d
+ 2f
+ e2 80 9c
, e2 80 9d
(11100010 10000000 10011101
в двоичном коде) является UTF-8 для U+201d
а также e2 80 9c
это UTF-8 для U+201c
, которые являются правой двойной кавычкой и левой двойной кавычкой, соответственно. Интересно, что ваша паста привела к тому, что они "наизнанку" - то есть //x\\, а не \\x//.
Низкая двойная кавычка ascii, которую использует bash 22
(шестнадцатеричное или 34 в десятичном), что на языке Юникод U+0022
( кавычка).
Я настоятельно рекомендую прочесть раздел "QUOTING" на странице руководства Bash (man bash
и поиск для цитирования (введите /QUOTING
+ Enter), затем используйте клавиши со стрелками вверх и вниз и q
выйти)