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

时间:2018-01-09 18:43:16

标签: bash shell

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

#!/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

1 个答案:

答案 0 :(得分:1)

为什么不使用awk?用:

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

你会得到:

filename1
filename2
...