首页 > 解决方案 > 如何在单引号或双引号中加入每个换行字符串

问题描述

如何在用逗号分隔的单引号或双引号内加入每个换行符字符串。

例子:

我有以下名字..

$ cat file

James kurt
Suji sane
Bhujji La
Loki Hapa

期望:

"James kurt", "Suji sane", "Bhujji La", "Loki Hapa"

编辑:

我的努力:

下面我已经完成了,但我分两步完成它,只是好奇它是否只能合并为一个。

 $ awk '{print "\x22" $1" "$2 "\x22"}'| tr '\n' ','

标签: linuxawksed

解决方案


首先用 the 打印所有行,"然后用逗号连接这些行:

< file xargs -d '\n' printf '"%s"\n' | paste -sd,

而不是换行符,您可以只删除尾随(或前导逗号):

< file xargs -d '\n' printf '"%s",' | sed 's/,$//'
< file xargs -d '\n' printf ',"%s"' | cut -c2-
< file xargs -d '\n' printf ', "%s"' | cut -c3-   # with space after comma

使用 sed 添加"并保留行,然后在最后一行用逗号替换换行符并删除前导命令并打印:

sed -n 's/^/"/;s/$/"/;H;${x;s/\n/, /g;s/^, //;p}' file

你很亲近!" "您尝试在行和之间添加一个"空格。你可以:

awk '{print "\x22" $0 "\x22"}' | tr '\n' ',' |
# and then remove trailing comma:
sed 's/,$//'

但是加入行paste更简单,然后用逗号替换换行符并删除最后一个:

awk '{print "\x22" $0 "\x22"}' | paste -sd,

推荐阅读