我有一个表,其中每个条目看起来都是这样的,
coagulation factor VIII-associated 1 /// coagulation factor VIII-associated 2 /// coagulation factor VIII-associated 3
我想使用cut -d/// -f2 myfile.txt
,但出现错误:
cut:错误的分隔符
当我在分隔符周围使用单引号或双引号时,情况相同:
cut -d'///' -f2 myfile.txt
cut -d"///" -f2 myfile.txt
我必须以某种方式逃避斜线吗?如果是这样,cut 的转义字符是什么?文档似乎没有该信息,我尝试了 \.
答案1
如果分隔符是除一个固定字符之外的任何内容,那么cut
就是错误的工具。
代替使用awk
。
考虑这个测试文件,它具有三个字段:
$ cat file
one///two/2//two///three
要打印第二个字段且仅打印第二个字段:
$ awk -F/// '{print $2}' file
two/2//two
答案2
其他答案都可以,但也可以替换当前的分隔符以便根据cut
需要使用,例如:
sed "s/\/\/\//\//g" myfile.txt | cut -d/ -f2
答案3
分隔符为cut
始终是单个字符,因此您不能指定“///”作为分隔符。
相反,您可以使用“/”作为分隔符并计算额外的字段:
cut -d/ -f4 myfile.txt
(字段 2 和 3 是“///”中斜杠之间的空字段)。