Shell

如何使用’,‘循環一行值並將其列印為列表

  • October 21, 2016

我正在嘗試使用帶有“,”的分隔符循環文件,並在“列表”中列印出這些值,但我不確定如何獲取分隔符的所有值。

我有一個包含這樣電子郵件的文件(全部在一行中):

test1@mail.com,test2@mail.com,test3@mail.com

我的腳本是這樣的:

EmailsFile="/dev/fs/C/Users/myuser/Desktop/EMAILSTOREAD.txt"

for email in $(cat ${EmailsFile} | cut -d "," -f 1-100)
do
  echo "${email}\n"
done

我做了 1-100,因為我不確定該文件有多少個值。

我得到的輸出是:

test1@mail.com,test2@mail.com,test3@mail.com

預期輸出:

test1@mail.com
test2@mail.com
test3@mail.com

任何的想法?

一個解決方案是:

awk '{ gsub(",","\n"); print $0 }' $EmailsFile

我更喜歡使用的解決方案tr,因為它在coreutils包中。

tr ',' '\n' < ${EmailsFile}

引用自:https://unix.stackexchange.com/questions/317733