只读文件的一部分/剪切到特定符号

时间:2014-01-06 15:54:59

标签: r bash

我有100个文件都有类似的结构

line1
line2
stuff
RR
important stuff

问题是我想在RR出现时剪切(它在每个文件中都会剪切)。但是,这并不总是在同一行(它可以是第20行,它可以是第35行)但它始终存在。因此,在bash或R(在文件中读取时)中是否有任何方法(只是标题的cuttign)?我更喜欢R。

3 个答案:

答案 0 :(得分:2)

您可以阅读所有行并删除不必要的行:

dat <- readLines(textConnection(
"line1
line2
stuff
RR
important stuff"))
# dat <- readLines("file.name")


dat[seq(which.max(dat == "RR") + 1, length(dat))]
# [1] "important stuff"

答案 1 :(得分:0)

如果您通过awk bash可以执行此操作:

awk '(/RR/){p=1; next} (p){print}' < file.txt

$ cat file.txt
line1
line2
stuff
RR
important stuff
$ awk '(/RR/){p=1; next} (p){print}' < file.txt
important stuff

当找到“RR”字符串时,这会设置标记pnext导致在不首先评估(p){ print }的情况下读取下一行。将打印后续行。

答案 2 :(得分:0)

以下是几种方式:

使用基本工具:

$ tail -n+$((1 + $(grep -n '^RR$' file.txt | cut -d: -f1))) file.txt
important stuff
$

使用纯

$ { while read ln; do [ "$ln" == RR ] && break; done; cat; } < file.txt 
important stuff
$ 

另一种方式,假设您可以保证文件中不超过9999行:

$ grep -A9999 '^RR$' file.txt | tail -n+2
important stuff
$