Unixシェルスクリプトファイルの最初の行にある一致する文字列に基づいてテキストファイルの名前を変更する

Unixシェルスクリプトファイルの最初の行にある一致する文字列に基づいてテキストファイルの名前を変更する

私はUnixスクリプトに初めて触れました。

最初の行(たとえば、で始まる行)の一致する文字列に基づいてファイルのHDR名前を変更したいと思います。

File.txt次のテキストファイル()があります。

HDR##############################1234###
########################################
########################################

以下は私のコードです。パターンで始まり、HDRパターンがあるファイルの最初の行について私のコードでより具体的にチェックするにはどうすればよいですか12345678

if grep -o "1234" File.txt

then mv File.txt Pattern1.txt

echo "File with pattern1 received..."

elif grep -o "5678" File.txt

then mv File.txt Pattern2.txt

echo "File with pattern2 received..."

else

echo "File have no matching pattern..."

fi

ベストアンサー1

行を読むには「read」を使用し、何をするかを決定するには「case」を使用します。

{
  IFS= read -r Firstline
  case "$Firstline" in
     ("HDR"*"1234"*) mv File.txt Pattern1.txt
                echo "File with pattern1 received..." ;;
     ("HDR"*"5678"*) mv File.txt Pattern2.txt
                echo "File with pattern2 received..." ;;
     (*)        echo "Nothing matched" ;;
  esac
} < File.txt

おすすめ記事