如何在 Bash 中用“cut”定义“制表符”分隔符?

如何在 Bash 中用“cut”定义“制表符”分隔符?

cut以下是使用空格分隔符将输入分解为字段并获取第二个字段的示例:

cut -f2 -d' '

如何将分隔符定义为制表符而不是空格?

答案1

两种方式:

Ctrl+ V,然后Tab使用“逐字记录”引用插入

cut -f2 -d'   ' infile

或者像这样写来使用ANSI-C 引用:

cut -f2 -d$'\t' infile

引号的形式$'...'不是 POSIX shell 语言的一部分(还没有),但除了 Bash 之外,至少还可以在 ksh、mksh、zsh 和 Busybox 中工作。

答案2

选项卡是默认值。

请参阅剪切手册页

-d delim
         Use delim as the field delimiter character instead of the tab
         character.

所以你可以写

cut -f 2

答案3

awk -F '\t' '{ print $2 }' inputfile

这将从 中提取每行输入的第二个制表符分隔字段inputfile

答案4

或者,可以将 cut 包装在函数中。

function getColumns ()
{
    local -r delimiter="${1:?}"
    local -r columns="${2:?}"

    if [[ "$delimiter" == '\t' || "$delimter" == "tab" ]]; then
        cut "--fields=${columns}"
        return
    fi

    cut "--delimiter=${delimiter}" "--fields=${columns}" 
}

相关内容