R 文件只读部分/剪切到特定符号
我有100个文件,都有类似的结构R 文件只读部分/剪切到特定符号,r,bash,R,Bash,我有100个文件,都有类似的结构 line1 line2 stuff RR important stuff 问题是我想在RR出现时剪切(它在每个文件中都会这样做)。然而,这并不总是在同一行(可以是第20行,也可以是第35行),但它总是在那里。因此,在bash或R(在读取文件时)中是否有任何方法可以实现这一点(仅对头进行剪切)?如果您通过bash获得awk,我更喜欢R.,您可以: awk '(/RR/){p=1; next} (p){print}' < file.txt $ cat fi
line1
line2
stuff
RR
important stuff
问题是我想在RR出现时剪切(它在每个文件中都会这样做)。然而,这并不总是在同一行(可以是第20行,也可以是第35行),但它总是在那里。因此,在bash或R(在读取文件时)中是否有任何方法可以实现这一点(仅对头进行剪切)?如果您通过
bash
获得awk
,我更喜欢R.,您可以:
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
awk'(/RR/){p=1;next}(p){print}'
这将在找到“RR”字符串时设置一个标志
p
,next
导致在不首先计算(p){print}
的情况下读取下一行。将打印后续行。您可以读取所有行并删除不必要的行:
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"
dat以下是一些方法:
使用基本工具:
使用纯:
为什么不全部读取并删除出现RR
的行对不起,您的意思是在R中重新读取并手动删除?严重吗?当然不是手动的,但是每个文件都有脚本来完成。顺便问一下,你的意思是删除带有RR的行还是删除RR之后的任何行?错误地理解这个问题是想删除RR
,因此,我猜@Sven的答案是正确的,但这不意味着我必须将每个文件复制到你答案的rep部分吗?我可能误解了…@user3069326不,你可以直接使用dat哦,我想这是一个误解,我想去掉第1行、第2行和其他东西…同时在RR之后保留所有位…@user3069326好的,我理解。看看更新后的答案。嘿..不知怎的,这只会删除RR代表的行…但是行1,行2,东西和重要的东西仍然存在。。。
$ 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
$
$ grep -A9999 '^RR$' file.txt | tail -n+2
important stuff
$