需要将单个文本列转换为单个行,然后根据模式拆分行

时间:2016-02-20 11:42:26

标签: bash

我是bash编程的新手,需要将单个文本列转换为单行,然后根据模式将行中的字符分开。

我有一个带有列的文本文档,该列有一个带六位数的字母 在每一行:

a111111
b222222
c333333
d444444
e555555

我需要将上面的列转换为以下行:

'a111111','b222222','c333333','d444444','e555555'

有人可以建议如何实现这一目标吗?

2 个答案:

答案 0 :(得分:2)

您可以将awkprintf

一起使用
awk -v ORS=, 'NR>1{printf "%s", ORS} {printf "\x27%s\x27", $0}' file

\x27打印单引号。

对于第二个记录,它将在开始时打印ORS(设置为逗号),然后打印引用的行。

<强>输出:

'a111111','b222222','c333333','d444444','e555555'

答案 1 :(得分:1)

另一种方法:

sed -r 's/^|$/\x27/g' file | paste -sd,

sed在每行的开头和结尾添加单引号,并且粘贴将该行与逗号连接起来

或者,为每行打印一个逗号,当你完成备份1个字符并用空格覆盖最后一个逗号时:

awk '{printf "'\''%s'\'',", $0} END {printf "\b \n"}' file