如何只读取包含ff行的文件中的行:3,9,12,15。 这个想法是每当我得到x和y时,我想在包含x和y的行中打印最后一行。 我的意思是,例如,如果我有像以下的awk脚本:BEGIN {name = $ 2;值= $ 3; } {if(name == x&& value == y&&&scan;到达第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
答案 0 :(得分: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
答案 1 :(得分: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
答案 2 :(得分:-1)
你需要在这里使用两个while循环来检查一行而另一个循环来迭代。像这样的东西。希望有所帮助
String line =“”; int 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::::");
}
}