%EA%B3%BC%20commad%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%8A%94%20%EB%B0%A9%EB%B2%95.%20epoch%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%ED%95%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)