Linux命令使列由多个delimeter分隔

Linux命令使列由多个delimeter分隔,linux,Linux,要转换以下模式吗 ab 光盘 判定元件 fg as 使用unix/linux命令的“ab”、“cd”、“de”、“fg” ----伙计们------父亲是这样的 QRTC1065173134 QRTC3988977812 QRTC0889556882 QUTR1641276912 ABCD1763495154 QRTC3991601819 这是所需的模式“QRTC1065173134”、“QRTC3988977812”、“QRTC0889556882”、“QUTR1641276912”、“ABC

要转换以下模式吗

ab 光盘 判定元件 fg as

使用unix/linux命令的“ab”、“cd”、“de”、“fg”

----伙计们------父亲是这样的

QRTC1065173134 QRTC3988977812 QRTC0889556882 QUTR1641276912 ABCD1763495154 QRTC3991601819


这是所需的模式“QRTC1065173134”、“QRTC3988977812”、“QRTC0889556882”、“QUTR1641276912”、“ABCD1763495154”、“QRTC3991601819”

我同意有点不清楚的评论,但为了好玩:

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

由于这个问题并不精确,我只研究了空格和字符串边界。因此,它可以处理任意数量的字符,分隔的空格。结果也会在两端进行修剪。嗯。

从澄清中,似乎这就是你想要的

$ 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:删除额外的空白是留给您的一项练习。

如果我理解正确,您有由空格分隔的组(例如ab bc de…),您希望在所有内容的开头/结尾包含一个
,并用
替换空格,“
那么
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'


检查tr、sed和paste,但只得到由单个delimeter分隔的列的结果。这不是一个模式。胡说八道,问题不清楚。你能更准确地描述一下你的模式吗?是否总是只有2个字符或任意长度?分隔符总是一个空格吗?或者只是任意数量的空格?或者甚至是任意数量的空格?嗨,嗯,总的来说,图案并不总是2个字符。它是任意长度的。实际上,模式是cd de EF模式在哪里?它在档案里吗?它是一个变量吗?您希望它在那里被替换,还是输出到新的文件或变量?谢谢。但实际上模式如下。我不确定我是否理解你的意思是有点和破折号?你能说得更准确一点吗?很抱歉没有早点回来,但我认为这个sed模式适用于你展示的模式。另外两个答案也是正确的。
$  echo "QRTC1065173134 QRTC3988977812 QRTC0889556882" | sed -e "s/\s/','/g" -e "s/^/'/" -e "s/$/'/"
'QRTC1065173134','QRTC3988977812','QRTC0889556882'