从文件中获取字段分隔符

时间:2018-11-11 00:04:40

标签: ksh

我有几个文件,它们彼此不同,并且使用;和作为分隔符。

有没有办法让我的程序读取文件?或|分隔符保存到变量中并稍后在脚本中使用?

1 个答案:

答案 0 :(得分:0)

通常来说答案是“是”,您可以动态确定定界符并在以后的编码中使用它。

您没有提到如何确定使用哪个定界符(例如,如果数据文件中同时存在两个字符会发生什么情况?),因此为了讨论起见,我们假设确定并存储了定界符在del变量中。

您还没有说明如何在代码中使用此定界符,因此,再次出于讨论的目的,我们将看一下使用cutawk的示例。

假设我们的数据文件(mydata)包含以下单行数据:

$ cat mydata
abc;def|ghi;jkl|mno;pqr|stu

我们现在将在;|之间切换定界符,并查看一些简单的cutawk示例...

############################
# set our delimiter to ';'

$ del=";"

##### display 1st field

$ cut -d"${del}" -f1 mydata
abc

$ awk -F"${del}" '{print $1}' mydata
abc

#### display 4th field

$ cut -d"${del}" -f4 mydata
pqr|stu

$ awk -F"${del}" '{print $4}' mydata
pqr|stu

############################
# set our delimiter to '|'
#

$ del="|"

##### display 1st field

$ cut -d"${del}" -f1 mydata
abc;def

$ awk -F"${del}" '{print $1}' mydata
abc;def

##### display 4th field

$ cut -d"${del}" -f4 mydata
stu

$ awk -F"${del}" '{print $4}' mydata
stu