2013-08-19 18 views
-2

这是我的Python代码:这个Python代码的'awk'版本?

with open('a') as f: 
    a, b = f 
    a, b = a.strip(), b.strip() 

虽然这是我的AWK代码:

awk '{printf $1":"}' a 

我想修改我的AWK代码,以便它可以做什么上面的Python代码一样。

如上所示,AWK代码是一团糟。

我需要它抓取文件a中的第1行和第2行,并允许我使用这些变量, 。就像在Python代码中一样。

或者还有别的东西是原生的Linux?

我应该看看?

如果我没有记错的话,有:

但最快的是将AWK。

+0

在你的python代码中,'a,b = f'是做什么的? – Kent

+0

@Kent:如果文件中只有两行,'a'和'b'会得到这两行;如果有更多或更少,它会引发一个例外。 (从下面的描述来看,这听起来像他并不关心长文件或短文件的例外情况,他只需要它对2行文件以相同的方式工作。) – abarnert

+0

所以,你的意思是你的文件'a'只有两行? – Kent

回答

3

我希望你的Python代码有很好的错误/异常处理,如果文件a有两条以上的行。

我假设你的文件有完全相同的两行,然后你可以做到这一点在AWK:

awk '{a[NR]=$0}END{ #here you could do whatever with a[1] (a) and a[2] (b)}' file 

例如:

kent$ seq 2|awk '{a[NR]=$0}END{print "hello "a[1]; print "hi "a[2]}' 
hello 1 
hi 2 

或者这样:

kent$ seq 2|awk '{a[NR]=$0}END{printf "%s:%s\n",a[1],a[2]}'   
1:2 

我希望这有帮助。