文字列パターンまでの最初の文字から文字列を抽出する

文字列パターンまでの最初の文字から文字列を抽出する

**$&*#@**フィールド区切り文字とレコード区切り文字を含む暗黙的な**$#@&***ファイルがあります。以下はその例です。

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

ループを使用してすべての値を解析し、検証することができます。テスト日はより複雑になるかもしれませんが、正規表現などを使用して実行できます。

おすすめ記事