我有一个带有2个空格分隔字符串的文本文件(我喜欢查看这个带有2列的文件)和数百万行。 我需要在第2列中编写字符串,并在提取的字符串之前和之后添加另一个字符串。 例: 原始文件如下所示:
id position
1 37474
2 4883
etc etc
我需要制作另一个看起来像这样的文件:
chr:37474-37474
chr:4883-4883
etc
即。编写chr:
并将字符串附加到原始文件的第二列,两次在“-
”之间。
我知道如何从原始文件的第二列中提取字符串并将其写入新文件,但我不知道如何执行上面显示的操作。有谁可以帮帮我。
答案 0 :(得分:1)
此awk
可以是一种方式:
$ awk '{printf "chr:%s-%s\n",$2,$2}' file
chr:position-position
chr:37474-37474
chr:4883-4883
chr:etc-etc
{printf "chr:%s-%s\n",$2,$2}
打印“chr:”+第二个字段两次。如果您不需要第一行,可以在NR>1
块之前使用{}
,以便不会对其进行处理。
答案 1 :(得分:0)
sed -r 's/.* (.*)/chr:\1-\1/' file
或没有-r
:
sed 's/.* \(.*\)/chr:\1-\1/'
会做:
kent$ echo "1 37474
2 4883
etc etc"|sed -r 's/.* (.*)/chr:\1-\1/'
chr:37474-37474
chr:4883-4883
chr:etc-etc
答案 2 :(得分:0)
这应该做:
awk 'NR>1 {print "chr:"$2"-"$2}' file
chr:37474-37474
chr:4883-4883
答案 3 :(得分:0)
原始文件有标题,这是解决方案:
使用awk
awk 'NR>1{printf "chr:%s-%s\n",$2,$2}' file
使用sed
sed -rn '/[0-9]/ s/.* (.*)/chr:\1-\1/p' file