Linux命令使列由多个分隔符分隔

时间:2015-02-28 15:05:14

标签: linux

想要转换以下模式

AB 光盘 德 fg as

使用unix / linux命令

'ab','cd','de','fg'。

----伙计-------- patern如下

QRTC1065173134 QRTC3988977812 QRTC0889556882 QUTR1641276912 ABCD1763495154 QRTC3991601819

这是必需的模式'QRTC1065173134','QRTC3988977812','QRTC0889556882','QUTR1641276912','ABCD1763495154','QRTC3991601819'

3 个答案:

答案 0 :(得分:0)

我赞同这些评论有点不清楚但是,为了好玩的缘故:

A="ab cd  ef gh   "
echo $A | sed -e "s/^\s*/'/; s/ \{1,\}/','/g; s/\s*$/'/g"

由于问题不准确,我只研究过空间和字符串边界。因此它可以使用任意数量的字符,分隔的空格。结果也在两端修剪。 HTH。

答案 1 :(得分:0)

从澄清来看,这似乎就是你想要的。

$ echo "QRTC1065173134 QRTC3988977812 QRTC0889556882 QUTR1641276912 ABCD1763495154 QRTC3991601819"  | sed -E "s/ /', '/g" | sed -E "s/$/'/" | sed -E "s/^/'/"
'QRTC1065173134', 'QRTC3988977812', 'QRTC0889556882', 'QUTR1641276912', 'ABCD1763495154', 'QRTC3991601819'

这里" E"用于扩展正则表达式,以便我们不需要转义正则表达式元字符。

评论1:删除额外的空格留给你练习。

答案 2 :(得分:0)

如果我理解正确,你有一些用空格分隔的组(例如ab bc de ...),你希望在所有内容的开头/结尾包含',并用{替换空格{1}}然后','可以相对轻松地处理这个问题。 sed ab下方...可以是任意字符串,例如cd。有几种方法可以将匹配的正则表达式拼凑在一起,但以下内容非常简单:

QRTC1065173134

示例

sed -e "s/\s/','/g" -e "s/^/'/" -e "s/$/'/"

$ echo "ab cd de fg hi" | sed -e "s/\s/','/g" -e "s/^/'/" -e "s/$/'/"
'ab','cd','de','fg','hi'