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