Bash 将单词从同一文件文本的一行移到另一行
我有一个文本文件,我想将“/a”从文本的第507行移到第561行。 我将只放一部分文件文本 例如:Bash 将单词从同一文件文本的一行移到另一行,bash,Bash,我有一个文本文件,我想将“/a”从文本的第507行移到第561行。 我将只放一部分文件文本 例如: A NAME="23_09_15at12_37_00_comp_sum_mismatch" < /A > <data> ----------------- Mismatch analysis ------------------------------------------------------------- Statistics
A NAME="23_09_15at12_37_00_comp_sum_mismatch" < /A >
<data>
-----------------
Mismatch analysis
-------------------------------------------------------------
Statistics All_Seqs Mean s.d.
-------------------------------------------------------------
Demographic expansion
---------------------
Tau 18.6 18.58410 0.00000
Tau qt 2.5% 7.79899 7.79899 0.00000
Tau qt 5% 10.53528 10.53528 0.00000
Tau qt 95% 23.50602 23.50602 0.00000
Tau qt 97.5% 24.74816 24.74816 0.00000
Theta0 0.00000 0.00000 0.00000
Theta0 qt 2.5% 0.00000 0.00000 0.00000
Theta0 qt 5% 0.00000 0.00000 0.00000
A NAME=“23\u 09\u 15at12\u 37\u 00\u补偿总额\u不匹配”
-----------------
不匹配分析
-------------------------------------------------------------
统计所有数据均为标准差。
-------------------------------------------------------------
人口扩张
---------------------
Tau 18.6 18.58410 0.00000
Tau qt 2.5%7.79899 7.79899 0.00000
Tau qt 5%10.53528 10.53528 0.00000
Tau qt 95%23.50602 23.50602 0.00000
Tau qt 97.5%24.74816 24.74816 0.00000
θ0.00000.00000.00000
θ0 qt 2.5%0.00000 0.00000
θ0 qt 5%0.000000.00000
我想要这个结果:
A NAME="23_09_15at12_37_00_comp_sum_mismatch"
<data>
-----------------
Mismatch analysis
-------------------------------------------------------------
Statistics All_Seqs Mean s.d.
-------------------------------------------------------------
Demographic expansion
---------------------
Tau 18.6 18.58410 0.00000
Tau qt 2.5% 7.79899 7.79899 0.00000
Tau qt 5% 10.53528 10.53528 0.00000
Tau qt 95% 23.50602 23.50602 0.00000
Tau qt 97.5% 24.74816 24.74816 0.00000
Theta0 0.00000 0.00000 0.00000
Theta0 qt 2.5% 0.00000 0.00000 0.00000
Theta0 qt 5% 0.00000 0.00000 0.00000
< /A >
A NAME=“23\u 09\u 15at12\u 37\u 00\u补偿和不匹配”
-----------------
不匹配分析
-------------------------------------------------------------
统计所有数据均为标准差。
-------------------------------------------------------------
人口扩张
---------------------
Tau 18.6 18.58410 0.00000
Tau qt 2.5%7.79899 7.79899 0.00000
Tau qt 5%10.53528 10.53528 0.00000
Tau qt 95%23.50602 23.50602 0.00000
Tau qt 97.5%24.74816 24.74816 0.00000
θ0.00000.00000.00000
θ0 qt 2.5%0.00000 0.00000
θ0 qt 5%0.000000.00000
您可以使用sed
执行以下任务:
sed -e '507s=</A>==' -e '561i\
</A>' input-file > output-file
sed-e'507s=='-e'561i\
'输入文件>输出文件
第一个命令表示“在第507行,将
替换为零”;第二个意思是“在第561行之前插入
”,awk
,以便救援
可能比sed版本更具可读性
$ awk -v k="< /A >" 'NR==1{sub(k,"")} NR==20{print k} 1' file
事实上,我不仅想搬家“/A”,而且还想搬家。顺便说一句,当我键入第二个命令时,我有一个错误“:command I expected \后跟文本。你知道为什么吗?@CafféSospeso:用
替换/A
,它应该仍然可以工作。也许你有不同的sed版本/实现,试着在\
后面加一个新行(答案更新)我试图使用这个命令,但它给了我同样的错误。我忘了提到我使用的是Mac。可能它与您建议的命令不一样。它可以工作,唯一的问题是它不删除第一个,但保留两个。它必须与写入的字符串完全匹配,并使用标记间距。如果是这样,可能是您的awk
他有不同的行为。
A NAME="23_09_15at12_37_00_comp_sum_mismatch"
<data>
-----------------
Mismatch analysis
-------------------------------------------------------------
Statistics All_Seqs Mean s.d.
-------------------------------------------------------------
Demographic expansion
---------------------
Tau 18.6 18.58410 0.00000
Tau qt 2.5% 7.79899 7.79899 0.00000
Tau qt 5% 10.53528 10.53528 0.00000
Tau qt 95% 23.50602 23.50602 0.00000
Tau qt 97.5% 24.74816 24.74816 0.00000
Theta0 0.00000 0.00000 0.00000
Theta0 qt 2.5% 0.00000 0.00000 0.00000
Theta0 qt 5% 0.00000 0.00000 0.00000
< /A >