我有一个以空格分隔的文本文件,例如 -
tae-miR16a Ta#S1798083_1 MRRGTILVVSWS
tae-miR16a Ta#S1798783_5 MAPMEAEEPDQQ
tae-miR16a Ta#S1797083_7 REVERSE SENSE MEDXYSSGSX
tae-miR16a Ta#S1987083_8 REVERSE SENSE MNSRMTCCSAISSEWATANFASVCSM
我想将最后一栏放入新行,如 -
tae-miR16a Ta#S1798083_1
MRRGTILVVSWS
tae-miR16a Ta#S1798783_5
MAPMEAEEPDQQ
tae-miR16a Ta#S1797083_7 REVERSE SENSE
MEDXYSSGSX
tae-miR16a Ta#S1987083_8 REVERSE SENSE
MNSRMTCCSAISSEWATANFASVCSM
答案 0 :(得分:2)
尝试使用sed:
sed 's/ \([^ ]*\)$/\n\1/' file
输出:
tae-miR16a Ta#S1798083_1 MRRGTILVVSWS tae-miR16a Ta#S1798783_5 MAPMEAEEPDQQ tae-miR16a Ta#S1797083_7 REVERSE SENSE MEDXYSSGSX tae-miR16a Ta#S1987083_8 REVERSE SENSE MNSRMTCCSAISSEWATANFASVCSM
添加选项-i
以编辑文件。
答案 1 :(得分:2)
这个单行Perl程序将按照您的要求执行
perl -pe's/\s+(\S+)\s*\z/\n$1\n/' infile > outfile
答案 2 :(得分:0)
您可以将sed -r 's/[[:space:]]+([^[:space:]]+[[:space:]]*)$/\n\1/' file
与扩展的正则表达式一起使用:
tae-miR16a Ta#S1798083_1
MRRGTILVVSWS
tae-miR16a Ta#S1798783_5
MAPMEAEEPDQQ
tae-miR16a Ta#S1797083_7 REVERSE SENSE
MEDXYSSGSX
tae-miR16a Ta#S1987083_8 REVERSE SENSE
MNSRMTCCSAISSEWATANFASVCSM
输出:
{{1}}
答案 3 :(得分:-2)
我使用上面给出的命令得到以下输出:
zma-miR827-5p Zm#S48299167_11 MLFSPYISFLNSELATHYPYLNLGIRYG
zma-miR827-5p Zm#S48299167_12 REVERSE
SENSE MGCKLTIEKTYIR
zma-miR827-5p Zm#S48299167_13 REVERSE
SENSE MRMSTATRQIFT
在这里,我找到了一个很长的命令管道来解决这个问题:
cat inputfilenae | sed 's/\s/\__/g' |sed 's/\__$//g' | awk 'BEGIN{FS=OFS="\__"} {$NF="\n"$NF}{print}' | sed 's/\__$//g' |sed 's/\__$//g' > outputfilename