我有一个由{##}
. 我试过了:
$ cat infile | cut -d" {##} " -f1 | grep -w "word"
但我无法cut
正确执行命令。如何转义特殊字符(例如!@#$%^&*(){}[]
in cut
?
awk 也可以使用多字符分隔符:
awk -F ' {##} ' '$1 ~ /\<word\>/ {print $1}' infile
首先cut
需要单字符分隔符(-d
选项)。所以字符串不起作用,您需要其他工具来准备输入,让我们使用sed
.
其次,您应该使用单引号'
而不是双引号,"
这样它就不会被 shell 解释。
如果我们可以|
用作分隔符,这将起作用。
cat infile | sed 's/ {##} /|/g' | cut -d'|' -f1 | grep -w 'word'
您可以将分隔符替换|
为输入文件中永远不会出现的字符。
您可以通过在它们前面加上反斜杠或将它们放在不被解释 \
的单引号中来转义 shell 字符。'
使用以下命令代替 cut 和 grep:
perl -F"{##}" -lane 'print $F[0] if($F[0]=~/\bword\b/)' infile