Bash错误 - 剪切:分隔符必须是单个字符(尝试使用“/”)

时间:2016-09-03 18:56:11

标签: bash delimiter

我正在尝试使用正斜杠作为分隔符,但我收到了错误:

  

cut:分隔符必须是单个字符

这是我的命令:

cat index.html |grep “href=“ |cut -d”/“ -f3 |more

1 个答案:

答案 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 9ce2 80 9d + 2f + e2 80 9c。对于e2 80 9d11100010 10000000 10011101(二进制为U+201dUTF-8e2 80 9cU+201c22right double quotation markleft double quotation mark分别。有趣的是,你的粘贴导致它们“由内到外” - 即// x \\而不是\\ x //.

bash strip的低-ascii双引号是U+0022(十六进制或十进制的34),在unicode用语中是man bash({{3 }})。

我强烈建议您阅读Bash手册页的“QUOTING”部分(/QUOTING并搜索QUOTING(键入q + Enter),然后使用向上和向下箭头键滚动,并{ {1}}退出)