在bash脚本中,如何逐行读取文件并使用定界符将其分配给变量?
example.txt 文件内容:
string1
string2
string3
string4
预期输出:
string1,string2,string3,string4
预先感谢
答案 0 :(得分:2)
很显然,我在下面的回答在行尾留下了逗号。一个快速的解决方法是使用Unix中的以下内置函数:
paste -sd, example.txt
在其中使用粘贴程序将所有行连接为一行,然后添加字符串定界符','
在UNIX中使用内置命令:
tr '\n' ',' < example.txt
可以将其分解为截断所有换行符并插入逗号定界符。
答案 1 :(得分:0)
它应该起作用:
#!/bin/bash
output=''
while IFS='' read -r line || [[ -n "$line" ]]; do
output=$output:",$line"
done < "$1"
echo $output
将文件作为参数
答案 2 :(得分:0)
其他可能的方式,只是为了好玩:
mapfile -t a < example.txt
(IFS=,; echo "${a[*]}")
mapfile -t a < example.txt
foo=$(printf '%s' "${a[@]/%/,}")
echo "${foo%,}"
foo=$(<example.txt)
echo "${foo//$'\n'/,}"
{
IFS= read -r foo
while IFS= read -r line; do
foo+=,$line
done
} < example.txt
echo "$foo"
sed ':a;N;$!ba;s/\n/,/g' example.txt