标题已经说明了:
我想使用一些linux one liner(例如sed)
转换
Anytext
{
到
Anytext{
这可以使用sed完成,或者如果没有使用sed然后使用awk one liner吗?
答案 0 :(得分:3)
当然,
sed 'N;s/\n{/{/'
或更全面的版本:
sed ':r;$!{N;br};s/\n{/{/g'
在这里,:r
设置了一个我们可以参考的标签,以便创建一个循环;
$!{...}
为除最后一行之外的每一行执行给定的命令集;
N;br
是循环中执行get的两个命令:N
向模式空间添加一个新行,br
分支回标签r
,完成循环。
然后,当您运行最终命令时,您将所有文件都放在模式空间中:
s/\n{/{/g
如果您尝试使用
之类的方法,可以看到两种方法之间的区别Anytext
{
{
{
答案 1 :(得分:1)
使用sed
的一种方式:
sed -ne '$! N; /^.*\n{/ { s/\n//; p; b }; $ { p; q }; P; D' infile
测试。假设infile
包含内容:
one
Anytext
{
two
three
{
four
five
{
输出将是:
one
Anytext{
two
three{
four
five{
答案 2 :(得分:1)
如果打算从\n{
序列移除换行符bbe
似乎是最简单的工具:
bbe -e 's/\n{/{/' infile
答案 3 :(得分:1)
这可能适合你(GNU sed):
sed ':a;$!{N;/.*\n{/ba};s/\n{/{/g;P;D' file
答案 4 :(得分:1)
使用awk
cat file
one
Anytext
{
two
three
{
four
five
{
awk '{printf (!/^{/&&NR>1?RS:x)"%s",$0} END {print ""}' file
one
Anytext{
two
three{
four
five{