**$&*#@**
フィールド区切り文字とレコード区切り文字を含む暗黙的な**$#@&***
ファイルがあります。以下はその例です。
100$&*#@200$&*#@50$&*#@Some String$&*#@2016-01-01 101010$#@&*101$&*#@210$&*#@51$&*#@Some String$&*#@2016-02-02 101010$#@&*102$&*#@220$&*#@55$&*#@Some String$&*#@2016-03-03 101010$#@&*
データ検証のために上記のファイルから最初の行を抽出するには、いくつかのコマンドが必要です。
この場合、wc -l
連続ストリーム(暗黙的なファイル)なのでゼロが返されるため、head -1は使用できません。
また、各フィールドを抽出し、最初の3つのフィールドが整数であること、および特定の数値フィールドが特定の形式のタイムスタンプであることを確認する必要があります。
答え1
あなたの例を保存するためにという変数を使用しましたstring
。以下は、区切りフィールドがある行でsed
区切られます。これをパイプで接続して、最初の行を取得できます。string
:
head -1
echo $string | sed 's/'"$#@&\*"'/\n/g'| sed 's/'"$&\*#@"'/:/g'
cut
その後、各行の最初の3つのフィールドを取得して、そのフィールドが数値であることを確認できます。最初のフィールドテストの例:
field1="$(echo $new_string | cut -d: -f1 | head -1)"
if [ "$field1" -eq "$field1" ] 2>/dev/null; then
echo "Integer.
else
echo "Not integer."
fi
ループを使用してすべての値を解析し、検証することができます。テスト日はより複雑になるかもしれませんが、正規表現などを使用して実行できます。