![.bash_history 파일에서 에포크 시간(예: #214235235)과 쉼표를 결합하여 한 줄에 저장하려면 어떻게 해야 합니까? 에포크 시간이 있는 명령만 표시되어야 합니다.](https://linux55.com/image/122803/.bash_history%20%ED%8C%8C%EC%9D%BC%EC%97%90%EC%84%9C%20%EC%97%90%ED%8F%AC%ED%81%AC%20%EC%8B%9C%EA%B0%84(%EC%98%88%3A%20%23214235235)%EA%B3%BC%20%EC%89%BC%ED%91%9C%EB%A5%BC%20%EA%B2%B0%ED%95%A9%ED%95%98%EC%97%AC%20%ED%95%9C%20%EC%A4%84%EC%97%90%20%EC%A0%80%EC%9E%A5%ED%95%98%EB%A0%A4%EB%A9%B4%20%EC%96%B4%EB%96%BB%EA%B2%8C%20%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EA%B9%8C%3F%20%EC%97%90%ED%8F%AC%ED%81%AC%20%EC%8B%9C%EA%B0%84%EC%9D%B4%20%EC%9E%88%EB%8A%94%20%EB%AA%85%EB%A0%B9%EB%A7%8C%20%ED%91%9C%EC%8B%9C%EB%90%98%EC%96%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EB%8B%A4..png)
예(.bash_history 파일)
cd Fortigate_Report/
ll
exit
#1512031841
history>set1
#1512031849
history>set2
#1512031864
vi comm -23 <(sort set1) <(sort set2)
#1512031877
comm -23 <(sort set1) <(sort set2)
#1512031892
comm -23 <(sort set2) <(sort set1)
#1512031971
- 이는 (newfile.txt 또는 새 파일)과 같은 다른 파일에 복사되어야 합니다.
- 파일은 에포크 시간이 없는 명령을 무시해야 합니다.
- 명령이 없으면 에포크 시간을 무시해야 합니다.
즉, newfile의 출력은 다음과 같아야 합니다.
#1512031841 history>set1
#1512031849 history>set2
#1512031864 vi comm -23 <(sort set1) <(sort set2)
#1512031877 comm -23 <(sort set1) <(sort set2)
#1512031892 comm -23 <(sort set2) <(sort set1)
답변1
그리고 sed
:
sed -n '/^#[0-9]\{1,\}$/N;s/\n/ /p' < file > newfile
답변2
testdata
샘플 데이터를 인쇄합니다...
$ testdata() { cat<<dog
cd Fortigate_Report/
ll
exit
#1512031841
history>set1
#1512031849
history>set2
#1512031864
vi comm -23 <(sort set1) <(sort set2)
#1512031877
comm -23 <(sort set1) <(sort set2)
#1512031892
comm -23 <(sort set2) <(sort set1)
#1512031971
dog
}
...그런 다음 파이프로 연결되어 awk
타임스탬프를 볼 때만 반응합니다. 그런 다음 이전에 본 타임스탬프가 앞에 붙은 다음 줄을 읽고 인쇄합니다.
$ testdata | awk '/^#/ && (getline L) > 0 { print $0, L }'
#1512031841 history>set1
#1512031849 history>set2
#1512031864 vi comm -23 <(sort set1) <(sort set2)
#1512031877 comm -23 <(sort set1) <(sort set2)
#1512031892 comm -23 <(sort set2) <(sort set1)