如何使用 cut 输出由特殊分隔符分隔的特定列

如何使用 cut 输出由特殊分隔符分隔的特定列

我有一个文件,其中包含由特殊分隔符分隔的多个列,其中包含多个字符,如下所示:<xx>

一行将如下所示:

firststring<xx>11<xx>thirdstring/<xx>22<xx>00<xx>00<xx><xx><xx><xx>-1<xx>-1<xx>1

有些列不包含任何内容,这就是为什么我有一些列,例如:<xx><xx>

我需要打印所有行的第 8 列和第 9 列。这个怎么做?我尝试了这个命令,但它没有打印任何内容。

cat myfile.txt | cut -d '<xx>' -f8,9
cut: the delimiter must be a single character
Try 'cut --help' for more information.

答案1

最多的实现awk允许多字符字段分隔符。所以你可以尝试:

awk -F'<xx>' '{print $8,$9}' myfile.txt

如果你想保留原来的分隔符,那么你需要设置输出字段分隔符 OFS以及,例如

awk -F'<xx>' 'BEGIN{OFS=FS} {print $8,$9}' myfile.txt

或者,有磨坊主如果你想要一个cut更像 - 的语法:

mlr --nidx --ifs '<xx>' cut -f 8,9 myfile.txt

或者,保留自定义分隔符

mlr --nidx --fs '<xx>' cut -f 8,9 myfile.txt

相关内容