【发布时间】:2013-03-11 21:19:06
【问题描述】:
我有一个文件被程序搞砸了,现在每一行看起来都像这样:
somelongstring:number number number number ... a lot more columns
(制表符分隔) 我需要做的是修改每一行,以便第一列,如果它的格式为 somelengthystring:number,则更改为只是数字(去掉字符串和冒号)
我知道我可以在 awk 中使用 split 来摆脱字符串和冒号,例如:
awk '{
split($1,array,":")
}
END{
print array[2],$2,$3...
}'
但问题是我不只想要第一列。我想要整行,只想修复第一列。唯一的问题是列太多了,打出 $2,$3, ... 一直到 $35 或其他什么的都是相当愚蠢的。有什么更好的方法来解决这个问题?
【问题讨论】:
-
somelongstring 里面有空格吗?
-
可能。据我所知,不,也不应该。但文件大小约为 500MB,因此无法检查每一行。
-
如果它有空格或冒号,它会变得多毛。我正在考虑如何处理这些情况。
标签: linux bash scripting awk text-parsing