2012-12-13 73 views
-2
780745,0,3,0,sto_un_os_fast,daily,lonrb08390,lonrs08841,1355250030,0000015139,1355265169 
783333,0,1,,sto_un_os_fast,daily,lonrb08390,lonrs08842,1355336488,0000032370,0000000000 
778143,0,3,0,sto_un_os_fast,daily,lonrb08390,lonrs08841,1355163652,0000003967,1355167619 
784864,0,3,0,sto_un_os_fast,daily,lonrb07366,lonrs08842,1355351424,0000001475,1355352899 

在上面的文件中,我想打印lonrb... &之后的第3列。Awk脚本查询

有人可以帮助我吗?

我面对awk '{print $6, $9}'的问题是,列更改为783333,0,1,,行。

+0

你说783333系列需要不同的处理;你能不能展示你所期望的输出,并解释为什么'awk -F'{print $ 7,$ 10}''不能做你想要的东西? –

+1

-1即使阅读了迄今发布的答案,并且您感谢@JonathanLeffler的回复,我无法弄清楚您想要什么。 –

回答

0

除了事实,它看起来像列7和10,我不知道是什么的问题是:

awk -F, '{ print $7, $10 }' 

783333,0,1,,线,还有一个空场的1和之前的后sto_un_os_fast,但空字段仍算作字段。

lonrb08390 0000015139 
lonrb08390 0000032370 
lonrb08390 0000003967 
lonrb07366 0000001475 

如果你想有一个逗号分隔的输出字段,那么您可以使用OFS=,或者干脆使用printf,而不是print

awk -F, 'BEGIN { OFS = "," } { print $7, $10 }' 
awk -F, '{ printf "%s,%s\n", $7, $10 }' 

这两项产生输出:

lonrb08390,0000015139 
lonrb08390,0000032370 
lonrb08390,0000003967 
lonrb07366,0000001475 
+0

awk -F,'{print $ 7,$ 10}' - 这会给出下列行783333,0,1,sto_un_os_fast,daily,lonrb08390,lonrs08842,1355336488,0000032370的错误值,它与awk -F,'{打印$ 6,$ 9}'。我想为这两行 – user1899817

+0

@ user1899817获得类似的列:所以你想为'783333'开始的行选择字段'daily'和'1355336488'?做出这个决定的基础是什么? '$ 1 == 783333 && $ 2 == 0 && $ 3 == 1 && $ 4 ==“”'? –

+0

许多感谢乔纳森......这对我有效:) – user1899817

1

嗯 - 你应该能够通过指定要做到这一点“”作为字段分隔符。

awk -F, '{print $7, $10} 
+0

感谢您的回复 – user1899817