重新格式化文本以在分隔符之前返回文本

问题描述 投票:0回答:1

我一直在清理以下文件名()字符串,如下所示:

#!/bin/sh

QUEUES='FILENAME1.WORLD1.J00.2D.00;FILENAME2.WORLD1.J01.2D.00;FILENAME3.WORLD1.J00.2D.00;FILENAME4.WORLD1.J01.2D.00;FILENAME5.WORLD1.J00.2D.00'

for i in $(echo $MQ_QUEUES | sed "s/;/ /g")
do
  a=$(echo "$i" | tr [:upper:] '[:lower:]' | sed 's/\./_/g')
  print $a
done

这当前产生上面队列的小写版本,其中全停止定界符由下划线替换。但我现在只想抓住标题的第一部分。我该怎么做?

即因此,而不是$a返回filename1_world1_j00_2d_00,它只会返回filename1

bash shell
1个回答
1
投票

为什么不用awk?有:

echo "$QUEUES" | tr ';' '\n' | awk -F'.' '{print tolower($1)}'

你会得到:

filename1
filename2
...
© www.soinside.com 2019 - 2024. All rights reserved.