我有一个包含值行的文件。第一列是PacBio读取ID,是一个正斜杠分隔值。我想通过删除最后的斜杠和超出它的值来修改列。理想情况下,结果可以是流(sed / awk等),并且不会依赖正斜杠的数量(即,无论是否存在单个正斜杠,解决方案都应该起作用,或者如下所示,则为三个。)
# example row
m54151_170617_100137/4194626/10117_11723/0_1606 1257 1606
# desired row
m54151_170617_100137/4194626/10117_11723 1257 1606
答案 0 :(得分:2)
如果您不介意稍微修改空白:
awk '{sub("/[^/]*$","",$1)}1' input
如果空白很重要:
sed 's@^\([^ ]*\)/[^ /]* @\1 @' input
答案 1 :(得分:1)
短 sed 解决方案:
onsubmit: function (e) {
// Insert content when the window form is submitted
e.insertContent('Textbox content: ' + e.data.Field);
e.insertContent('Listbox content: ' + e.data.Listbox)
}
示例性输出:
sed 's~/[^/[:space:]]* ~ ~' file
m54151_170617_100137/4194626/10117_11723 1257 1606
- 被视为 sed 子命令分隔符答案 2 :(得分:1)
如果您的字段中可能包含空格,请使用/
进行拆分。
使用awk,您可以在/
上拆分,使用/
重新加入字段,然后打印最后一个字段:
$ awk -F'/' '{s=""
for (i=1;i<NF;i++)
s=s ? s FS $i : $i
print s $NF}' file
在Ruby中同样容易一些:
$ ruby -F'/' -lane 'puts $F[0...-1].join("/")<<$F[-1]' file
答案 3 :(得分:0)
awk '{print substr($1,1,40),$2,$3}' OFS="\t" file
m54151_170617_100137/4194626/10117_11723 1257 1606