나는 파일 이름 목록을 id-datetime.txt
한 줄에 하나씩 갖고 있는데, 여기서 ID는 항상 동일하고 날짜/시간은 순서대로 되어 있습니다.
첫 번째와 마지막 날짜 시간이 필요하므로 변수에 sed_script를 넣어서 $script
얻을 수 있습니다.
sed -nr "1 $script p; \$ $script'
알겠어요
datetime (oldest)
datetime (newest)
단일 파일 목록을 사용하는 것도 가능합니다.
이제 ID가 포함된 다른 행도 가져오려면 어떻게 해야 합니까?
id
datetime (oldest)
datetime (newest)
라인 1을 두 번 편집하여 2개의 별도 라인을 제공하는 (쉬운) 방법이 있습니까?
답변1
알았어, 알겠어
1 {
#hold the line
h
#extract id
s|^([0-9]{6}).*|\1|; p
#put line back again
g
#get datetime
$sed_str
}
sed 스크립트의 이 부분은 첫 번째 줄을 두 번 인쇄(및 편집)합니다.
답변2
첫 번째 행과 마지막 행에서 일부 데이터를 추출하시겠습니까? 각각에 대해 하나의 명령을 사용하여 처음에는 두 줄을 인쇄하십시오.
sed -n -e '1s/^\(.*\)-\(.*\)\.txt$/\1\
\2/p' -e '$s/^\(.*\)-\(.*\)\.txt$/\2/p'
awk가 더 장황하면 더 명확해질 수 있습니다.
awk -F- '{gsub(/\.[^.]*$/,"");
dt=$2}
NR==1 {print $1; print $2}
END {print dt}'
아니면 펄.
perl -l -ne 's/\.[^.]*$//;
/^(.*)-(.*)$/ or next;
print $1 if $.==1;
print $2 if $.==1 || eof'