【问题标题】:Sed regex expression?sed正则表达式?
【发布时间】:2014-09-29 20:14:48
【问题描述】:

我想知道是否有人可以帮助我处理这个 sed 正则表达式。

我会放整个代码:

for w in ./tmp/horse_F3.csfasta; do
    sed -n '/^>/!{H;$!b};s/$/ /;x;1b;s/\n//g;p'  ${w} > ${w}.flat
done

【问题讨论】:

  • 您似乎使用的是 fasta 格式文件。您的预期输入和预期输出是什么?文件的一两块(>header + data block)就可以了。
  • 您是要我们编辑它吗?还是您要我们告诉您它的作用?
  • 老实说,我不知道会发生什么...我正在研究和编写将 csfasta 文件格式化为平面文件的脚本(无论这意味着什么)...我真的不知道这是什么正则表达式的意思是……我对正则表达式了解一点。
  • 我很想知道这个表达是什么意思。谢谢!

标签: regex linux sed


【解决方案1】:
sed -n

除非被告知,否则不要打印。

'/^>/!{H;$!b}; 

如果该行不以“>”开头,则将该行添加到保留空间,然后如果它不是文件的最后一行,则跳转到脚本的末尾(即从下一个重新开始行)。

s/$/ /;

在行尾添加一个空格。

x;

用保留空间的内容交换行。

1b;

如果我们正在处理第一行(即,如果这是第一次通过脚本),则跳到脚本的末尾。

s/\n//g;

从我们正在处理的内容中删除所有换行符 (\n)。也就是说,如果是多行(从保持空间开始),则将它们变成一行。

p'

打印出来。

【讨论】:

    猜你喜欢
    • 2018-11-11
    • 1970-01-01
    • 1970-01-01
    • 2017-07-28
    • 1970-01-01
    • 1970-01-01
    • 2017-12-18
    • 2010-09-19
    • 2018-08-22
    相关资源
    最近更新 更多