2016-07-22 63 views
-2

我的文件中有多行并且想要合并第一行和第二行,依此类推。考虑将________作为第二行中的空格。想通过从第二行中删除开始空间来合并两行

u_pcrd_logic/CTS_ccl_INV_clk_G1_L17_206           
________________________________2.001e+08  2.001e+08 0.0001773 0.001871 2.427e-07 0.002048  0.02934 INV_X6N_A9TL_C16 

RC_CG_HIER_INST353/RC_CGIC_INST             
______________________________2.001e+08  2.001e+08 0.0004888 0.001523 4.51e-07 0.002012  0.02882 PREICG_X6R_A9TL_C16 

预期输出:

u_pcrd_logic/CTS_ccl_INV_clk_G1_L17_206  2.001e+08  2.001e+08 0.0001773 0.001871 2.427e-07 0.002048  0.02934 INV_X6N_A9TL_C16 

RC_CG_HIER_INST353/RC_CGIC_INST  2.001e+08  2.001e+08 0.0004888 0.001523 4.51e-07 0.002012  0.02882 PREICG_X6R_A9TL_C16 

感谢。

+1

你知道的[vi.se]的存在为这些样的问题呢?另外,请检查[问]。 – fedorqui

+0

[编辑]您的问题,使用编辑器的{}'按钮更正格式,并用空格替换所有不必要的空格替换字符。 –

回答

0

您可以使用以下spc.awk脚本:

# spc.awk script 

/^/{ #if the line starts with space 
    lines=lines $0 # add the current line to the former recorded lines 
    next 
} 
{ # for every other line ... 
    print lines # print the recorded lines 
    lines=$0 # record current line 
} 
END { print lines } # in the end print the last recorded lines 

然后使用命令:

awk -f spc.awk your_input_file 
+1

你是对的。我相应编辑。 –

0

又一awk

$ awk -v RS= -v ORS="\n\n" '{$1=$1}1' file 

u_pcrd_logic/CTS_ccl_INV_clk_G1_L17_206 2.001e+08 2.001e+08 0.0001773 0.001871 2.427e-07 0.002048 0.02934 INV_X6N_A9TL_C16 

RC_CG_HIER_INST353/RC_CGIC_INST 2.001e+08 2.001e+08 0.0004888 0.001523 4.51e-07 0.002012 0.02882 PREICG_X6R_A9TL_C16 

加入行,直到一个更多的空行(记录中断),打印一个多余的空行。

1

随着SED:

$ sed '$!N;/ *\n */s//  /;P;D' file 
u pcrd logic/CTS ccl INV clk G1 L17 206  2.001e+08  2.001e+08 0.0001773 0.001871 2.427e-07 0.002048  0.02934 INV X6N A9TL C16 

RC CG HIER INST353/RC CGIC INST  2.001e+08  2.001e+08 0.0004888 0.001523 4.51e-07 0.002012  0.02882 PREICG X6R A9TL C16