使用shell脚本操作文本?

时间:2015-06-25 14:57:13

标签: shell awk

如何使用shell脚本操作文本文件?

输入

chr2:98602862-98725768
chr11:3100287-3228869
chr10:3588083-3693494
chr2:44976980-45108665

预期产出

2 98602862 98725768
11 3100287 3228869
10 3588083 3693494
2 44976980 45108665

2 个答案:

答案 0 :(得分:1)

使用sed即可编写

$ sed 's/chr//; s/[:-]/ /g' file
2 98602862 98725768
11 3100287 3228869
10 3588083 3693494
2 44976980 45108665

或许您可以使用awk

awk -F "chr|[-:]" '{print $2,$3, $4}' file
2 98602862 98725768
11 3100287 3228869
10 3588083 3693494
2 44976980 45108665

它的作用

  • -F "chr|[-:]"将字段分隔符设置为chr:-。现在您可以打印不同的字段或列。

  • 您还可以使用另一个字段分隔符-F [^0-9]+,它将除数字之外的任何内容作为分隔符。

答案 1 :(得分:1)

如果你不关心领先的空白字符:

$ tr -s -c '[0-9\n]' ' ' < file
 2 98602862 98725768
 11 3100287 3228869
 10 3588083 3693494
 2 44976980 45108665