我有100個文件,所有具有類似的結構只讀文件的一部分/切割特定符號
line1
line2
stuff
RR
important stuff
的問題是,我想RR出現時削減(其中它在每個文件)。但是,這並不總是在同一行(它可以是第20行,它可以是第35行),但它總是在那裏。因此,在bash或R中(當在文件中讀取時)是否有任何方法(只是標題的切面)?我寧願R.
我有100個文件,所有具有類似的結構只讀文件的一部分/切割特定符號
line1
line2
stuff
RR
important stuff
的問題是,我想RR出現時削減(其中它在每個文件)。但是,這並不總是在同一行(它可以是第20行,它可以是第35行),但它總是在那裏。因此,在bash或R中(當在文件中讀取時)是否有任何方法(只是標題的切面)?我寧願R.
如果你有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」串中發現,next
導致下一行沒有被讀取,設置標誌p
首先評估(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"
但這並不意味着我必須複製過去每個文件到代表部分你的答案?我可能誤解了...... – user3069326
@ user3069326不,您可以使用'dat < - readLines(「file.name」)'。 –
哦,我認爲有一個誤解,我想擺脫Line1,line2和東西......同時保留RR後的所有位...... – user3069326
下面的幾個方面:
$ 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
$
爲什麼不讀所有和刪除行其中'RR'出現 – Ananta
對不起,你的意思是Rread在R和手動刪除?嚴重? – user3069326
不是手動的,但有腳本來爲每個文件做這件事。順便說一句,你的意思是刪除RR或任何RR後的行? – Ananta