특정 범위에서 내역 항목을 가져 오거나 필터링하려면 어떻게해야합니까?
기록 파일이 커서 자주 사용합니다
history | grep somecommand
지금, 나의 기억은 꽤 나쁘다. 그리고 나는 또한 내가 명령을 입력했을 때 내가 뭘했는지보고 싶다.
GET 일치, 말 : 지금 나는이 할 4992 somecommand
다음 내가,
history | grep 49[0-9][0-9]
이것은 일반적으로 충분하지만, 4972에서 5012까지의 명령, 즉 20 명령은 20 명령입니다.
더 쉬운 방법이 있는지 궁금합니다. 커스텀 스크립트가 문제가 있다고 생각하지만 다른 누군가가 이전에 비슷한 것을했을 것입니다.
답변
grep
일치하는 부분 주위에 일부 줄을 인쇄하도록 지시 할 수 있습니다 ( 예 : 3 전과 5 후) :
history | grep -B 3 -A 5 somecommand
grep -C 4
와 같습니다 grep -A 4 -B 4
.
그러나 종종 얼마나 많은 라인을 미리 원하는지 정확하게 알지 못할 수도 있습니다. 따라서 덜 사용하고 그 안에서 검색하십시오. 명령 행에서 검색을 시작할 수도 있습니다.
history | less +/somecommand
답변
fc를보십시오 :
fc -l 4972 5012
… bash 내장 명령입니다. (tcsh에서 시도하지 마십시오 :>)
답변
시험 history | grep -C20 '^4992'