私の入力ファイル:
{empty line}
Test #1
data
{empty line}
Test #2
data
{empty line}
Test #3
{empty line}
Test #4
data
{empty line}
Test #5
予想出力:
1
2
4
単純なbashスクリプトを使用して各テストで利用可能なデータがある場合は、シリアル番号(ハッシュタグの後)をどのように取得できますか?
編集:各テストのデータには、日付、時刻、違いなどのいくつかの値が含まれています。 2つのテストの間に2つ以上のデータラインがあります。各テストの間には空行があります。 「テスト」数字は常に1から始まり、厳密に増加する正の整数です。
ベストアンサー1
これを行うことができます:
awk -F ' #' '
function maybePrint() {
if (NR > 1 && NR > lastLine + 1) {print lastSeq}
}
$1 == "Test" {
maybePrint()
lastSeq = $2
lastLine = NR
}
END {
maybePrint()
}
' file
要件を変更するのは良いことではありませんが、パズルが好きなので、ファイルに空白行がある場合:
sed -n '
/^Test #/ {
s///
=
p
}
$=
' file \
| paste - - \
| awk -F '\t' '
NR > 1 && $1 - prevLine > ($2 ? 2 : 0) {print prev}
{prevLine = $1; prev = $2}
'