我有一个以下格式的文本文件:
cat yourfile.txt
a
b
c
d
e
f
g
我想将其转换为:
A,B,C,d,E,F,G
这是我现在提出的解决方案:
while read line; do printf "%s%s" $line "," ; done < yourfile.txt
a,b,c,d,e,f,g,
两个问题:
答案 0 :(得分:2)
您可以使用sed
:
$ sed ':a;N;$!ba;s/\n/,/g' test.txt
a,b,c,d,e,f,g
请参阅this answer以了解更多详情。
否则,对于其他解决方案,删除最终逗号非常容易。例如sed
:
$ cat test.txt|tr "\n" ","|sed "s/,$//g"
a,b,c,d,e,f,g
$ while read line; do printf "%s%s" $line "," ; done < test.txt|sed "s/,$//g" # with your solution
a,b,c,d,e,f,g
答案 1 :(得分:2)
只需使用tr
命令
> string=$(tr $'\n' ',' < "yourfile.txt"); echo "${string%,*}"
a,b,c,d,e,f,g
使用bash替换删除尾随逗号。
答案 2 :(得分:2)
“one”-liner利用IFS
变量和数组:
str=$( IFS=$'\n'; arr=( $(<test.txt) ); IFS=,; echo "${arr[*]}" )
首先,使用换行符作为字段将整个文件读入数组 拆分器确保每个元素一行。接下来,更改字段分隔符 逗号,以便将整个数组连接成一个以逗号分隔的字符串。