【发布时间】:2019-10-25 11:36:19
【问题描述】:
while IFS=, read -r col1 col2 col3
do
email="$col3"
email+='@gmail.com'
echo $email
done < ~/Desktop/Names.csv
我不必对第 1 列或第 2 列做任何特殊处理,但将 @gmail.com 添加到第 3 列只会输出 @gmail.com 或者如果输入字符串较长 @gmail.com+输入字符串的较长位.
即。
如果第 3 列是 Dekkars,我会收到 @gmail.com。如果是 aaaaaaaaaaa(比 @gmail.com 长一个长度)我会得到 @gmail.coma
我确定这与 @ 符号有关,但我尝试使用 \ 来转义它、单引号等。有什么想法吗?
我已经阅读了连接 bash 字符串,并且我正在执行它所建议的操作,但结果与预期不同。
这是输入数据
Test Name,8,aaaaaaaaaaa
John Doe,8,bbbbbbbbbbbb
Name,Grade,ID
(注意,我在底部有列,否则我的 while 循环不会读取底部行)
输出
@gmail.coma
@gmail.combb
【问题讨论】:
-
您尝试过
email="${col3}@gmail.com"吗?不确定 bash 中的+=...@受单引号保护,因此不会被解释。 -
还在做同样的事情!这让我发疯。想知道如果在 .csv 上再添加一列,并且电子邮件已经存在,是不是更容易......
-
当您处理基于列的数据时,请考虑尝试一下 awk。
-
请提供至少一行输入数据,最好是两行 -- 输入 shell 时,代码在 bash 和 zsh 中工作。
-
我闻到了行尾的问题。
$col3最后可能包含一个 CR (\r,0x0D);打印它并在其后跟@gmail.com将@gmail.com写入行首。