如何从ANT脚本中串联文件的所有行

  • 本文关键字:文件 ANT 脚本 bash ant
  • 更新时间 :
  • 英文 :


我有一个文本文件以以下格式:

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,

两个问题:

  • 我在最后获得额外的逗号(,)
  • 我知道我可以在shell脚本中运行此命令,并从build.xml中执行Shell脚本。还是有更优雅的解决方案?

您可以使用sed

$ sed ':a;N;$!ba;s/n/,/g' test.txt 
a,b,c,d,e,f,g

请参阅此答案以阅读更多详细信息。

否则,对于其他解决方案,删除最终逗号非常容易。例如使用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

a"一个" - 利用IFS变量和数组:

str=$( IFS=$'n'; arr=( $(<test.txt) ); IFS=,; echo "${arr[*]}" )

首先,将整个文件读取为一个数组,使用线馈送为字段分离器确保每个元素一行。接下来,更改了场分隔符到逗号,以便将整个数组连接到一个逗号划分的字符串中。

只需使用tr命令

> string=$(tr $'n' ',' < "yourfile.txt"); echo "${string%,*}"
a,b,c,d,e,f,g

用bash替换来删除尾随逗号。

相关内容

  • 没有找到相关文章