我想把一个文件夹下面所有后缀名为sh的文件的所有含有configGenericVideoEnc.pl的行。例如下面所示./xcode.configGenericVideoEnc.pl -u32PID 6410 -u32EncoderType 0 -u32CodingMode 2 -u32BitRate 1850000 -instance 4 中的所有-u32PID和-u32BitRate的值2和1850000记录下来。
然后以qar geq 2*145 in 6410和qar feq 2*143 in 6140的两行记录的形式写到与sh同文件名但是后缀为qar的文件中去。但是-u32PID和-u32BitRate的值还是变化的,每一个含有configGenericVideoEnc.pl的行都不一样,每个文件不一样且每个文件有含有的行数也不一样。我没有想法。急切求帮助 c#python
然后以qar geq 2*145 in 6410和qar feq 2*143 in 6140的两行记录的形式写到与sh同文件名但是后缀为qar的文件中去。但是-u32PID和-u32BitRate的值还是变化的,每一个含有configGenericVideoEnc.pl的行都不一样,每个文件不一样且每个文件有含有的行数也不一样。我没有想法。急切求帮助 c#python
解决方案 »
- WPF 编译报“application/xaml+xml”ContentType 无效错误
- 序列化和反序列化存储一个List类型的对象的问题,请教了
- 付费开发一个pptp客户端 进入看要求
- 高手求救,跪地求救
- 如何用c#做一个文件检索动态显示的功能
- 请问如何通过Graphics对象获取它所属的Control呢?
- 新手提问(vc#控件)高分!谢谢
- 用VS2005做了一个关于Oracle管理的工具,供初学者学习
- 求httpwebquest抓取信息
- 如何将一个字符串转换成整型???C#txtImageID.Text的内容是一个数字!!!
- C#自绘控件中的OnPaint方法是如何调用的
- 怎样按一定规则拆分字符串?
var query = from file in new DirectoryInfo(path).GetFiles("*.sh")
from ln in File.ReadAllLines(file.FullName)
where ln.Contains("configGenericVideoEnc.pl")
let sp = ln.Split(new char[] { ' ' }, StringSplitOptions.None)
let value1 = (from i in Enumerable.Range(0, sp.Length)
where sp[i] == "-u32PID"
select sp[i + 1]).First()
let value2 = (from i in Enumerable.Range(0, sp.Length)
where sp[i] == "-u32CodingMode"
select sp[i + 1]).First()
let value3 = (from i in Enumerable.Range(0, sp.Length)
where sp[i] == "-u32BitRate"
select sp[i + 1]).First()
select new { fileName = file.Name, value1, value2, value3 };
foreach (var rec in query)
{
int i = 0;
}
python也有类似的库,linq只能算C#的补课吧,追上了优雅的其他语言。
C#也有它不优雅的一面,作为静态语言,它的语法几乎是不能改造的。在大多数解释语言中,API即语法。解释器本身也可以视作API,而你编写代码,也可以视作语言的扩展——所以那些优雅的东西一出现,动态语言马上就能追上,而C#只能等微软在后续版本中更新喽。