1
/usr/bin/sed 's/,/\\n/g' comma-delimited.txt > newline-separated.txt

这对我不起作用。我只是删除了“,”,但现在只是没有分隔标记。

4

4 回答 4

4

你必须有一个旧版本的 sed,所以你需要在你的替代品中放一个文字 LF char,即

/usr/bin/sed 's/,/
/g' comma-delimited.txt > newline-separated.txt

您甚至可能需要转义 LF,因此请确保最后一个字符 '\' 之后没有空格字符

/usr/bin/sed 's/,/\
/g' comma-delimited.txt > newline-separated.txt

我希望这有帮助。

于 2012-06-22T14:34:26.430 回答
1

这可能对您有用:

echo a,b,c,d,e | sed 'G;:a;s/,\(.*\(.\)\)/\2\1/;ta;s/.$//'
a
b
c
d
e

解释:

  • 将换行符附加到模式空间。G
  • 用模式空间中的最后一个字符替换,'s,即\n :a;s/,\(.*\(.\)\)/\2\1/;ta
  • 删除换行符。s/.$//
于 2012-06-22T15:58:47.980 回答
0

我尝试了以下方法,看起来很笨拙,但确实有效。容易理解。我使用 tr 来替换占位符 §。唯一需要注意的是占位符,必须不在字符串中。

ps -fu $USER | grep java | grep DML| sed -e "s/ -/§      -/g" | tr "§" "\n"

将为您提供命令行的缩进输出。DML 只是一些服务器名称。

于 2016-02-10T11:20:49.863 回答
-1

在 AIX7 上,答案 #3 效果很好:我需要在段落的开头插入一个换行符,这样我就可以执行 grep -p 以在生成的“节”中过滤“mksysb” lsnim -l | /usr/bin/sed 's/^[a-zA-Z/\^J&/' (实际上初始行有一个转义的换行符: lsnim -l | /usr/bin/sed 's/^[a-zA -Z/\ &/') 调用命令显示 ^J 语法...

于 2015-09-04T16:54:28.237 回答