我目前正在使用KSH。
其中有一个包含文字的文件,并说我们正在该文字中查找某个字符串。
如何从该特定字符串开始打印该文件的内容到文件末尾?
我知道,
sed '/\(pattern\).*/{s//\1/; q;}'
将从头开始打印文件,直到找到该字符串。我尝试交换它,我想这不起作用。
谢谢你,
文森特
答案 0 :(得分:0)
您可以使用awk
awk '/pattern/ {f=1} f' file
找到pattern
后,将标记f
设置为true
如果标记f
为true,则打印该行。
我更喜欢这个版本与范围版本比较,因为如果你有其他测试要做,它会更灵活。
另一个awk
使用范围。
awk '/pattern/,0' file
此处end
模式永远不会成为现实,因此在找到start
模式后不会停止打印。
将范围与sed
sed -n '/pattern/,$p' file
从pattern
和其余行开始打印。我的模式是yo
cat file
Here is my data
What do you like
I like ice creem
awk -F "yo" 'NF>1 {f=1;print FS$2;next} f' file
you like
I like ice creem
答案 1 :(得分:0)
通过sed,
sed -n '/pattern/,/&/p' file
如果要打印模式旁边的所有文本,请按照以下示例
$ cat ccc
foo
blah bar blah
gjhj
jjhk
$ sed -n '/ bar /,/&/p' ccc | sed -r 's/^.* (bar.*)$/\1/g'
bar blah
gjhj
jjhk
通过awk
,
$ awk '/ bar / {sub (/^.*bar/,"bar"); f=1} f' ccc
bar blah
gjhj
jjhk
I think you want this command,
$ cal 6 2014 | awk 'NR==1{print} NR==2{print} / 20 / {sub (/^.*20/,"20"); f=1} f'
June 2014
Su Mo Tu We Th Fr Sa
20 21
22 23 24 25 26 27 28
29 30
如果您想正确安排日期和日期,请尝试此操作,
$ cal 6 2014 | awk 'NR==1{print} NR==2{print} / 20 / {sub (/^.*20/," 20"); f=1} f'
June 2014
Su Mo Tu We Th Fr Sa
20 21
22 23 24 25 26 27 28
29 30