Bash从文件中读取行并使用定界符分配给变量

时间:2018-08-07 05:47:03

标签: bash

在bash脚本中,如何逐行读取文件并使用定界符将其分配给变量?

example.txt 文件内容:

string1
string2
string3
string4

预期输出:

string1,string2,string3,string4

预先感谢

3 个答案:

答案 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