如何使用三斜杠作为剪切分隔符?

如何使用三斜杠作为剪切分隔符?

我有一个表,其中每个条目看起来都是这样的,

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 是“///”中斜杠之间的空字段)。

相关内容