我听说printf比echo. 根据我的经验,我只能回忆起一个我不得不使用的实例,printf因为它echo无法将一些文本输入到 RHEL 5.8 上的某个程序中,但printf确实如此。但显然,还有其他差异,我想询问它们是什么以及是否有特定情况下何时使用一种与另一种。
我正在使用以下命令将十六进制代码 0900(而不是?)的字符集范围 grep 到 097F(而不是?)。我如何使用十六进制代码代替 ? 和 ??
bzcat archive.bz2 | grep -v '<[?-?]*\s' | tr '[:punct:][:blank:][:digit:]' '\n' | uniq | grep -o '^[?-?]*$' | sort -f | uniq -c | sort -nr | head -50000 | awk '{print "<w f=\""$1"\">"$2"</w>"}' > hindi.xml
Run Code Online (Sandbox Code Playgroud)
我得到以下输出:
<w f="399651">??</w>
<w f="264423">??</w>
<w f="213707">??</w>
<w f="74728">??</w>
<w f="44281">??</w>
<w f="35125">??</w>
<w f="26628">?</w>
<w f="23981">??</w>
<w f="22861">??</w>
...
Run Code Online (Sandbox Code Playgroud)
我只想使用十六进制代码而不是 ? 和 ?在上面的命令中。
如果根本不可能使用十六进制代码,我可以使用 unicode 代替十六进制代码作为字符集 ('?-?') 吗?
我正在使用 Ubuntu 10.04
如何 grep 查找一系列 unicode 字符?
\n我见过一个角色的例子。如何用 unicode 值来 grep 字符?
\n我对 shell 替换方法以外的方法感兴趣
\n因为 shell 替换似乎有点有限,例如它似乎不适用于非图形 unicode 字符,例如 \\u80 的代码点。
我可以让该方法在一定范围内工作,但仅限于一定程度,因为它不会覆盖像 \\u80 (unicode codepoint 80) 这样的非图形字符
$ echo grep [$\'\\u41\'-$\'\\u45\']\ngrep [A-E]\n\n$ echo 4142434445|xxd -r -p\nABCDE\n\n$ echo 4142434445|xxd -r -p | grep [$\'\\u41\'-$\'\\u45\']\nABCDE\nRun Code Online (Sandbox Code Playgroud)\n\\u0080-\\uFFFF$ 方法在 shell 级别使用替换,因此无法从或向上查找字符\\u0080,因为如果 shell 无法显示字符,则它将无法工作。
ugrep 可通过 debian 的 apt-get 获得,但不适用于我在 VPS 上的 ubuntu 版本。我还得再测试一下。
\n注意 事实 证明,shell 替换方法确实适用于控制字符,因此甚至适用于一系列控制字符或任何 unicode 字符,毫无疑问 ugrep 也适用。最初,当我尝试使用 grep …