2013-10-13 35 views
0

我有一个10列制表符分隔文件,我想从文件第一列中的所有条目中删除单词"id"单行从第一列制表符分隔文件中删除单词“id”

是否有awk(或其他Linux命令行)一个班轮来做到这一点?

也就是说,myfile.withid.txt

id1 1 2 id3 4 5 6 7 8 9 
id2 10 20 id30 40 50 60 70 80 90 

与awk来,myfile.woid.txt

1 1 2 id3 4 5 6 7 8 9 
2 10 20 id30 40 50 60 70 80 90 

注意单词从第一列删除"id"

+3

这个问题似乎是题外话,因为它属于在[unix.se]。 –

+1

@ColeJohnson:不是[tag:awk]是一种编程语言吗? – Johnsyweb

回答

2

另一个awk

awk '/^id/ {$0=substr($0,3)}1' file 
1 1 2 id3 4 5 6 7 8 9 
2 10 20 id30 40 50 60 70 80 90 
3

这AWK一行代码会做:

awk -F'\t' '{gsub(/id/,"",$1);print}' file 
+0

我刚刚意识到这个解决方案的输出不会生成制表符分隔的文件......否则没有问题。 – user2805568

+1

@ user2805568你做'awk -F'\ t'-v OFS ='\ t''....'file'来获得TAB分隔的输出。你提到'我想删除单词“id”',但没有明确说'id'只会在第一列显示一次,它应该始终是第一个字段的开始。这就是为什么我使用'gsub(/ id /,“”,$ 1)',例如它可以是'3id0id xx xx'当然像'id33 xx xx ..'这样的文本也可以工作 – Kent

1

替代的解决方案:

awk 'BEGIN{j=1}{$1=j++; print}'>myfile.woid.txt myfile.wid.txt 
+0

你怎么知道第一列是序列号? – Imagination

+0

@想象力,只是想象力。 – user1502952

相关问题