~/.zsh_history의 ZSH 기록에서 모든 명령 목록을 가져오고 싶습니다. 이 파일의 형식은 다음과 같습니다.
: 1467892191:0;cd /usr/share
: 1467892276:0;lsrc
: 1467892743:0;logout
: 1467892751:0;reload
: 1484284548:0;echo 'multiple \
line \
test'
명령은 여러 줄에 걸쳐 있을 수 있습니다. 각 명령의 초기 형식은 regex 와 동일합니다 ^: \d{10}:\d;
.
이것이 원하는 출력입니다.
cd /usr/share
lsrc
logout
reload
echo 'multiple \n line \n test'
모든 표준 Unix 명령은 공정한 게임입니다. 이것의 목적은 명령 목록을 $EDITOR에 전달하여 문서나 기사를 쉽게 선택할 수 있도록 하는 것입니다.
이것이 내가 awk에 대해 아는 것입니다. 대부분 빈 줄을 인쇄합니다.
awk -F': [0-9]{10}:[0-9];' '{ print $1 }' ~/.zsh_history
답변1
이 awk 명령을 시도해 볼 수 있나요?
$ cat a.txt
: 1467892191:0;cd /usr/share
: 1467892276:0;lsrc
: 1467892743:0;logout
: 1467892751:0;reload
: 1484284548:0;echo 'multiple \
line \
test'
: 1467892191:0;cd /usr/share
: 1467892276:0;lsrc
: 1467892743:0;logout
: 1467892751:0;reload
: 1484284548:0;echo 'multiple \
line \
: 1467892751:0;reload
$ awk -F\; 'NF!=1{printf("\n%s",$NF)}NF==1{printf("n %s ",$1)}' a.txt
cd /usr/share
lsrc
logout
reload
echo 'multiple \n line \ n test'
cd /usr/share
lsrc
logout
reload
echo 'multiple \n line \
reload