sed - 如何使用 `tr` 用逗号替换换行符?

标签 sed tr

我看到了这个:How can I replace a newline (\n) using sed? ,并认为我会尝试使用 tr', 替换换行符.

该文件如下所示:

something
newline
newline again

我希望它看起来像这样:
something',
newline',
newline again',

所以,我尝试了这些:
tr "\n" "'," < myfileabovetr "\n" "\'," < myfileabove
他们都没有做我想做的事……我做错了什么吗?

最佳答案

tr将一个字符转换为另一个字符,它不会映射到/从字符串,因此它不能将换行符映射到字符串。正在尝试使用 sed这样做会让你变得难以理解和/或不可携带的困惑。只需使用 awk :

awk -v ORS="'," '1' file

等等 - 你发布的例子没有显示你用 ', 替换换行符这将是:
$ awk -v ORS="'," '1' file
something',newline',newline again',$

它显示您附加 ',在每一行的末尾,这是完全不同的事情。你仍然不能用 tr 做到这一点但你可以用 sed 做到这一点或 awk :
$ sed 's/$/'\'',/' file
something',
newline',
newline again',

$ awk -v ORS="',\n" '1' file
something',
newline',
newline again',

关于sed - 如何使用 `tr` 用逗号替换换行符?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39022935/

相关文章:

linux - grep 每行中的一个模式

regex - 如何使用 sed 提取子字符串但仅在第一次出现?

bash - 使用两列比较三个文件并使用 awk/sed 在每个文件中打印唯一条目

bash - 删除文件末尾的换行符

linux - 当我尝试用空格替换新行、制表符和连续空格时,字符 'a' 被删除

bash - 如何从 bash 中的变量中删除文字字符串 "\n"(不是换行符)?

shell - 在 bash 中删除匹配之前和之后的行(使用 sed 或 awk)?

bash - 使用bash从文件中提取文本

bash - 在什么情况下我应该在音译中使用美元符号和单引号(例如 tr -d '\n' )或任何其他函数?

Linux/Unix tr 命令,奇怪的行为