
私はファイル名のリストを1id-datetime.txt
行に1つずつ持っています。IDは常に同じで、日付/時刻は順番になっています。
最初と最後の日時が必要なので、変数にsed_scriptを入れて$script
取得できます。
sed -nr "1 $script p; \$ $script'
わかりました。
datetime (oldest)
datetime (newest)
単一のファイルリストを使用することも可能です。
これで、IDを含む他の行も取得するにはどうすればよいですか?
id
datetime (oldest)
datetime (newest)
1行目を2回編集して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回印刷(および編集)します。
答え2
最初の行と最後の行からいくつかのデータを抽出しますか?それぞれに1つのコマンドを使用して、最初は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'