我想通过使用命令','
在 shell 脚本中用(以及开始和结束单引号)替换新行 char(\n)。tr
但是tr
命令没有正确替换 char
这是我使用的命令:
< 1.txt tr "\n" "','"
此命令的输出:
erer'erer.'erer'erer'
文件 1.txt 是这样的:
erer
erer.
erer
erer
请建议我如何使用相同的命令来完成。
问题已编辑
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
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