我有一个bash函数,它遍历某个单词的文件和greps列表并将其写入文件.问题是我得到了单词的每个实例,我只想得到第一个实例.我通过添加head -1
grep 遇到了一个解决方案,但是现在,当我调用它时,我的函数就会挂起.
83 function processAppLogs {
84 for i in `find $log_des -name $fname`
85 do
86 p=$i
87 d=${p//applog.txt/unmountTimestampList.txt}
88 grep "UNMOUNTED" $i >> $d
89 grep "PATIENT ID" | head -1 | $i >> $d
90 done
91 }
Run Code Online (Sandbox Code Playgroud)
我只想grep第一个"PATIENT ID"实例,但我想我可能有错误的语法?这是grep第一个实例并将其写入文件的正确方法吗?
您可以-m 1
用来表示您只想匹配一次:
grep -m 1 "PATIENT ID" >> "$d"
Run Code Online (Sandbox Code Playgroud)
来自man grep
:
-m NUM, - max-count = NUM
NUM匹配行后停止读取文件.
$ seq 8 12
8
9
10
11
12
$ seq 8 12 | grep 1 -m 1
10
$ seq 8 12 | grep 1 -m 2
10
11
Run Code Online (Sandbox Code Playgroud)