2

我想通过使用命令','在 shell 脚本中用(以及开始和结束单引号)替换新行 char(\n)。tr但是tr命令没有正确替换 char

这是我使用的命令:

< 1.txt tr "\n" "','" 

此命令的输出:

erer'erer.'erer'erer'

文件 1.txt 是这样的:

erer
erer.
erer
erer

请建议我如何使用相同的命令来完成。

问题已编辑

4

2 回答 2

3

tr 不是用于此目的的正确工具,因为 tr 进行 char by char 转换而不是 char 到字符串替换。使用 awk:

awk '{printf("'"'"'%s'"'"',", $0)} END{print ""}' 1.txt

为避免所有奇怪的双引号/单引号内容,请使用:

awk '{printf("\x27%s\x27,", $0)} END{print ""}' 1.txt

为避免在最后一行后打印逗号:

awk '{a[cnt++]=$0} END{ for (i=0; i<length(a)-1; i++) printf("\x27%s\x27,", a[i]); 
      print a[i]}' 1.txt
于 2013-06-26T10:57:17.647 回答
2

tr只是音译字符。你可以这样做:

$ seq 10 | sed "s/.*/'&'/" | paste -sd, -
'1','2','3','4','5','6','7','8','9','10'

或者,如果您不想要第一个和最后一个'

$ seq 10 | sed '$!G;$!G' | paste -sd "','" -
1','2','3','4','5','6','7','8','9','10
于 2013-06-26T11:29:43.007 回答