我有一个被程序搞砸的文件,现在每行都看起来像这样:
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美元或者其他任何东西都是相当愚蠢的。有什么更好的解决方法?
答案 0 :(得分:1)
使用Perl你可以这样做:
cat file.txt | perl -pe 's/.*?://'
答案 1 :(得分:1)
如果你到目前为止所做的工作,除了$ 2,......部分:
awk '{
split(..)
$1=array[2]
print
}'
答案 2 :(得分:1)
使用sed
。从行的开头(^
)删除所有字符,直到第一次冒号。
sed 's/^[^:]*://' infile
答案 3 :(得分:0)
答案 4 :(得分:0)
如果只更改第一个TAB分隔字段中的格式somelengthystring:number
,您可以尝试这样做:
awk '$1~/:[0-9]*$/{sub(/.*:/,x,$1)}1' FS='\t' OFS='\t' file