想用linux里的awk处理一个文本,输入行号,打印出来。因为数据是逗号分隔的csv文件,我第一时间就想起了awk。但是在写python时,出错了。
以下是用shell写的程序可以运行:
#!/bin/bash echo -n "please enter the line:" read lie awk -F ',' -v var="$lie" '{print $var}' test_csv.csv >lines.txt
但是在python里面就报错了:
#!/usr/bin/python
#filename: hash.py import os os.system('echo -n "please enter the line:"') os.system('read lie') os.system('awk -F ',' -v var="$lie" '{print $var}' test_csv.csv >lines.txt')
错误提示:

test_csv.csv文件里面有50列10000行的数据
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
os.system(" awk -F ',' -v var="$lie" '{print $var}' test_csv.csv >lines.txt") ######回复 @Karblue : 感谢你的回复,按照你的方法已经取出来了######回复 @songoex : 我晕。你的lie 是用shell读出来的。当然不行了。 应该是 lie = raw_input() os.system("awk -F ',' -v var=""+lie+"" '{print $var}' test_csv.csv >lines.txt")######命令提示没有报错,但是却打印了test_csv.csv里面的全部数据######试试这个:os.system("awk -F ',' -v var="$lie" '{print $var}' test_csv.csv >lines.txt")######命令没有报错,但是却打印了test_csv.csv里面的全部数据