在Bash中使用两个连续分隔符拆分字符串

在Bash中使用两个连续分隔符拆分字符串,bash,split,delimiter,Bash,Split,Delimiter,以下是Windows DHCP租约文件的摘录: 10.11.1.3 Infinite DHCP 5c497d1ee201 xxxx yyyyy 10.11.1.4 PC-name Infinite DHCP 0002025e611e xxxx yyyyy 我想得到可变的IP和MAC。下面是我分析每一行的方法: IFS=$'\t' read -r -a array <<< "$line&

以下是Windows DHCP租约文件的摘录:

10.11.1.3       Infinite    DHCP    5c497d1ee201        xxxx    yyyyy
10.11.1.4   PC-name Infinite    DHCP    0002025e611e        xxxx    yyyyy
我想得到可变的IP和MAC。下面是我分析每一行的方法:

 IFS=$'\t' read -r -a array <<< "$line"
 ip=${array[0]}
 mac=${array[3]}

IFS=$'\t'read-r-a数组您可以使用带有选项卡的
awk
作为输入字段分隔符:

awk-F'\t'{print$1,$5}文件
10.11.1.3 5c497d1ee201
10.11.1.4 0002025e611e

您可以使用带有选项卡的
awk
作为输入字段分隔符:

awk-F'\t'{print$1,$5}文件
10.11.1.3 5c497d1ee201
10.11.1.4 0002025e611e

我会改用
readarray

$ line=$'10.11.1.3\t\tInfinite\tDHCP\t5c497d1ee201\txxxx\tyyyyy'
$ readarray -d $'\t' -t array <<< "$line"
$ declare -p array
declare -a array=([0]="10.11.1.3" [1]="" [2]="Infinite" [3]="DHCP" [4]="5c497d1ee201" [5]="xxxx" [6]=$'yyyyy\n')
$line=$'10.11.1.3\t\tInfinite\tDHCP\t5c497d1ee201\txxxx\tyyyyy'

$readarray-d$'\t'-t array我将使用
readarray

$ line=$'10.11.1.3\t\tInfinite\tDHCP\t5c497d1ee201\txxxx\tyyyyy'
$ readarray -d $'\t' -t array <<< "$line"
$ declare -p array
declare -a array=([0]="10.11.1.3" [1]="" [2]="Infinite" [3]="DHCP" [4]="5c497d1ee201" [5]="xxxx" [6]=$'yyyyy\n')
$line=$'10.11.1.3\t\tInfinite\tDHCP\t5c497d1ee201\txxxx\tyyyyy'
$readarray-d$'\t'-t数组