0

我怎样才能从包含 ff 行的文件中读取行:3、9、12、15。这个想法是每当我得到 x 和 y 时,我想打印包含 x 和 y 的行中的最后一行。我的意思是,例如,如果我有 awk 脚本,例如: BEGIN { name = $2; 价值=$3;} { if(name == x && value==y && 扫描到达第 3、9、12 和 15 行) printf("hello world") }。我可以使用什么表达式代替“扫描到达第 3、9、12 和 15 行”

1 x y
2 x y 
3 x y 
4 a d
5 e f
6 x y
7 x y
8 x y
9 x y
10 g f
11 x y
12 x y
13 p r
14 w c
15 x y
16 a z
4

3 回答 3

2

一种方法awk

$ awk '/^[0-9]+ x y$/{a=$0;f=1;next}f{print a;f=0}' file
3 x y
9 x y
12 x y
15 x y

一种没有的方法awk

$ tac file | uniq -f1 | fgrep -w 'x y' | tac
3 x y
9 x y
12 x y
15 x y
于 2013-09-30T07:52:56.113 回答
1

有的这样?

awk 'a=="xy" && $2$3!="xy" {print b} {a=$2$3;b=$0}' file
3 x y
9 x y
12 x y
15 x y
于 2013-09-30T07:45:49.010 回答
-2

您需要在这里使用两个 while 循环,一个用于检查行,另一个用于迭代。像这样的东西。希望有帮助

字符串行 = ""; 诠释 i = 0;

    try {
        BufferedReader in = new BufferedReader(new FileReader("D:\\readline.txt"));
        while ((line = in.readLine()) != null) {
            i++;
            if (line.charAt(0) == 'x' && line.charAt(2) == 'y') {
                System.out.println("Line containg Y and Y");
                String searchline = line;
                while ((line = in.readLine()) != null) {   //Iterate untill you find the last line of X and Y
                    i++;         //To keep count of the line read
                    if (line.charAt(0) == 'x' && line.charAt(2) == 'y') {
                        searchline = line;
                        continue;
                    } else {
                        break;
                    }

                }

                System.out.println("Printing the  line ::" + (i - 1) + ":: containing X and Y::::::::" + searchline);
            }
        }

    } catch (Exception e) {
        System.out.println("Exception Caught::::");
    }
}
于 2013-09-30T08:09:35.500 回答