我正在尝试使用正斜杠作为分隔符,但我收到了错误:
cut:分隔符必须是单个字符
这是我的命令:
cat index.html |grep “href=“ |cut -d”/“ -f3 |more
答案 0 :(得分:3)
我怀疑你在那里粘贴了高级ascii(花哨的unicode)双引号。
比较
$ 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
(二进制为U+201d
为UTF-8而e2 80 9c
为U+201c
为22
为right double quotation mark和left double quotation mark分别。有趣的是,你的粘贴导致它们“由内到外” - 即// x \\而不是\\ x //.
bash strip的低-ascii双引号是U+0022
(十六进制或十进制的34),在unicode用语中是man bash
({{3 }})。
我强烈建议您阅读Bash手册页的“QUOTING”部分(/QUOTING
并搜索QUOTING(键入q
+ Enter),然后使用向上和向下箭头键滚动,并{ {1}}退出)