删除每个第n行的最后一个字符

Cod*_*man 2 bash awk text sed

我有一个有四条重复行的文件.我想删除每四行的最后一个字符.该文件的描述如下.

@Header  
DNA Sequence 
+ 
Quality score!
<Pattern of four above lines repeats>
Run Code Online (Sandbox Code Playgroud)

我试图从每四个质量得分线中删除最后一个字符(感叹号).

@Header  
DNA Sequence 
+ 
Quality score
<Pattern of four above lines repeats>
Run Code Online (Sandbox Code Playgroud)

我可以使用awk拉出每四行,但是如何删除文件每四行的最后一个字符

此问题仅适用于特定行.目前我的方法是使用awk来提取质量得分,我可以用sed删除最后一个字符.

awk 'NR == 4 || NR % 4 == 0'
sed 's/.$//'
Run Code Online (Sandbox Code Playgroud)

我目前不确定如何将编辑后的质量得分覆盖到原始文件中.任何想法或更简洁的现场sed/awk参数将不胜感激.

cho*_*oba 6

GNU-sed有一个可以在每个第n行运行的扩展:

sed '4~4s/.$//'
Run Code Online (Sandbox Code Playgroud)

m~n意味着在m-th行重复每一n行,运行以下命令.

  • 另请参阅/sf/ask/2100249931/ (2认同)