Unix 从第二列开始替换

Unix 从第二列开始替换,unix,sed,replace,dataset,Unix,Sed,Replace,Dataset,我有以下文件: 12721 2 2 2 1 1 2 1 2 1 1 1 2 2 1 1 2 1 2 1 1 2 12722 2 2 2 1 1 2 1 2 1 1 1 2 2 1 1 2 1 2 1 1 2 12734 2 2 2 1 1 2 1 2 1 1 1 2 2 1 1 2 1 2 1 1 2 12753 2 2 2 1 1 2 1 2 1 1 1 2 2 1 1 2 1 2 1 1 2 12756 2 2 2 1 1 2 1 2 1 1 1 2 2 1 1 2 1

我有以下文件:

12721   2 2 2 1 1 2 1 2 1 1 1 2 2 1 1 2 1 2 1 1 2
12722   2 2 2 1 1 2 1 2 1 1 1 2 2 1 1 2 1 2 1 1 2
12734   2 2 2 1 1 2 1 2 1 1 1 2 2 1 1 2 1 2 1 1 2
12753   2 2 2 1 1 2 1 2 1 1 1 2 2 1 1 2 1 2 1 1 2
12756   2 2 2 1 1 2 1 2 1 1 1 2 2 1 1 2 1 2 1 1 2
我需要删除从第二列开始的空格,以便我的文件如下所示:

12721 222112121112211212112
12722 222112121112211212112
12734 222112121112211212112
12753 222112121112211212112
12756 222112121112211212112
我尝试使用此命令替换:

sed '1,$s/ //g' snpdata > snpdata1
它不起作用,我明白了:

12721222112121112211212112
12722222112121112211212112
12734222112121112211212112
12753222112121112211212112
12756222112121112211212112
从第二栏开始,有什么替换的建议吗

注意:我的原始数据集有数千列和行。

编辑:因为OP现在更改了预期输出,所以对代码进行了一些调整,这将有助于OP获得最新的预期输出

awk '{val=$1;$1="";gsub(/[[:space:]]+/,"");print val,$0}'  Input_file

下面的
awk
可能会对您有所帮助

awk '{val=substr($0,5);gsub(/ +/,"",val);print substr($0,1,4), val;val=""}' Input_file
使用sed:

 sed 's/ //g;s/\([0-9]\{5\}\)\([0-9]\+\)/\1 \2/' file
第一个命令删除所有空格,第二个命令对数字进行分组,这可能对您有用(GNU-sed):


将列后面的第一组空格替换为换行符。删除所有其他空格。将换行符替换为空格。

您似乎已经更改了您现在期望的输出:)现在让我也调整一下我的代码。如果您可以访问GNU sed,您可以使用
sed的//[[:space:]//2g'
(或
sed-r的//[:space:]+//2g'
)谢谢Ravinder,很抱歉,我编辑了我的问题。拜托,你能把你的节目安排好吗?
sed 's/\([^ ]\)  */\1\n/1;s/ //g;s/\n/ /' file