2011-09-01 71 views
1

我有一个shell脚本。我想打开一个文件,并从文件中复制一些文本。例如:在文件中查找文本值,将其打印出来?

// foo.java

public static int ID_RED = 100; 
public static int ID_GREEN = 200; 
public static int ID_BLUE = 300; 

//伪代码:

int pos = find("public static int ID_RED = "); 
echo(file.substring(pos, end of line); 

pos = find("public static int ID_GREEN = "); 
echo(file.substring(pos, end of line); 

pos = find("public static int ID_BLUE = "); 
echo(file.substring(pos, end of line); 

//所需的输出:

100 
200 
300 

所以我想开富。 java,并打印出在这些行结尾处找到的值。我觉得这是比较容易做到这一点的Perl或Python,想看看是否有一个简单的方法在一个shell脚本来完成这一点,虽然,

回答

0

这应该帮助您开始:

#!/bin/bash 
grep "public static int ID_RED = " foo.java | cut -d " " -f 6 | tr -d \; 
grep "public static int ID_GREEN = " foo.java | cut -d " " -f 6 | tr -d \; 
grep "public static int ID_BLUE = " foo.java | cut -d " " -f 6 | tr -d \; 
1
sed -n '/^public static int ID_/{s/;.*$//;s/.* //p;}' foo.java 

这不是恰好匹配您的伪代码隐含的标准,但它为这个特定的输入做的工作。如果可能有空白,请考虑用^ *public代替^public。例如,如果您不想匹配ID_YELLOW,请将ID_替换为ID_\(RED\|GREEN\|BLUE\)\>

0
awk -F '[ ;]' '/public static int/ {print $(NF-1)}' foo.java 

sed -n '/public static int/ {s/^.*= *\([0-9]\+\);/\1/; p}' foo.java 
相关问题