在新分隔符的情况下第一个字段检索

时间:2016-10-02 14:44:32

标签: unix delimiter cut

我在这样的Unix文件中有第一条记录,我想从中将CST_ID检索到变量中。

CST_ID||@||CST_NAME||@||CST_ADD||@||CST_ACC

我该怎么办?我正在使用它。

head -1 test.txt | awk -F '||@||' '{print $1}'

但是,它会将CST_ID||作为输出,但我只需要CST_ID

2 个答案:

答案 0 :(得分:1)

您可以使用img,就像您添加的代码一样。

cut

robert@habanero:~$ cat input CST_ID||@||CST_NAME||@||CST_ADD||@||CST_ACC robert@habanero:~$ cut -d '|' -f 1 < input CST_ID 定义分隔符,这里是管道。它需要使用单引号,以便shell不会解释它。 -d指定您想要的字段,在本例中为第一个字段。

如果您只想为特定行数执行此操作,请将其与-f(或head)相结合。

在这样的变量中捕获它(假设是bash):

tail

答案 1 :(得分:0)

示例输入:

    cat sample
    CST_ID||@||CST_NAME||@||CST_ADD||@||CST_ACC

解决方案:grep从行的开头到第一个||-m用于在首场比赛后退出 awk||设置为分隔符,并打印第一个字段。 NR==1是将搜索限制为第一个字段。

grep -m1 -oP '^.*?(?=\|\|)' sample
CST_ID
awk -F'\\|\\|' 'NR==1{print $1}' sample
CST_ID
awk -F'\\|\\|' 'NR==1{NF=1}1' sample
CST_ID