我试图删除行,如果它有数字作为tsv文件第一列中的第一个字符。
abc london
def paris
4ge berlin
323 rome
xyz prague
#56 Bern
我想删除(行:4ge,323,#56)。我尝试过的是这样的事情
awk 'BEGIN{FS=OFS="\t"}{$1=/^[0-9]/; print $1,$2}' train.tsv > train.tsv
答案 0 :(得分:3)
像这样:
awk '!/^[[:digit:]]/' file
由于它是第一列,您可以简单地检查整行是否以数字开始(而不是)。如果您对可以使用的任何其他列感兴趣(例如第二列):
awk '$2 !~ /^[[:digit:]]/' file
顺便说一下,你可能会错过这里的打印命令。那是因为它是默认命令,意思是
awk '!/^[[:digit:]]/' file
与
相同awk '!/^[[:digit:]]/{print}' file
与
相同awk '!/^[[:digit:]]/{print $0}' file
答案 1 :(得分:2)
这就是grep被发明的那种工作:
grep -v '^[0-9]'
与grep '^[^0-9]'
之间的区别在于前者会打印空行,后者则不会。
答案 2 :(得分:0)
在这里尝试使用grep。
grep -o '^[^0-9].*' Input_file
使用grep的-o选项检查有关正则表达式的行的开头。简单地说,这是一行不与数字dtart然后打印它。 ^告诉grep从哪里开始,[^ 0-9]告诉neget数字。*将在这里完成剩下的行。