以下に、指定された仕様に基づいてシェルスクリプトの例を示します。このスクリプトは、二つのファイル内で指定された文字列を検索し、結果を標準出力に出力します。また、2行以上ヒットした場合には特定のメッセージを出力します。
#!/bin/bash
# 検索対象のファイル
FILE1="path/to/file1.txt"
FILE2="path/to/file2.txt"
# 検索する文字列
SEARCH_STRING1="search_term_1"
SEARCH_STRING2="search_term_2"
# 一時ファイル
TEMP_FILE="/tmp/search_results.txt"
# 初期化
> "$TEMP_FILE"
# ファイル1で検索
echo "ファイル1(${FILE1})の検索結果:" >> "$TEMP_FILE"
grep -n "$SEARCH_STRING1" "$FILE1" >> "$TEMP_FILE"
# 行をカウント
COUNT_FILE1=$(grep -c "$SEARCH_STRING1" "$FILE1")
if [ "$COUNT_FILE1" -ge 2 ]; then
echo "ファイル1の結果: 2行以上の結果が返されました" >> "$TEMP_FILE"
fi
echo "" >> "$TEMP_FILE"
# ファイル2で検索
echo "ファイル2(${FILE2})の検索結果:" >> "$TEMP_FILE"
grep -n "$SEARCH_STRING2" "$FILE2" >> "$TEMP_FILE"
# 行をカウント
COUNT_FILE2=$(grep -c "$SEARCH_STRING2" "$FILE2")
if [ "$COUNT_FILE2" -ge 2 ]; then
echo "ファイル2の結果: 2行以上の結果が返されました" >> "$TEMP_FILE"
fi
# 結果を表示
cat "$TEMP_FILE"
# 一時ファイルを削除
rm "$TEMP_FILE"
解説
- ファイルと検索文字列の定義:
FILE1とFILE2で検索対象のファイルのパスを指定します。SEARCH_STRING1とSEARCH_STRING2でそれぞれ検索する文字列を指定します。
- 検索結果を一時ファイルに保存:
- 一時ファイル
TEMP_FILEを作成し、検索結果をこのファイルに出力するように設定しています。
- ファイル1での検索:
grep -nを使用してFILE1内でSEARCH_STRING1を検索し、行番号付きで結果を一時ファイルに出力します。- 検索結果の行数を数え、2行以上の場合はメッセージを追加します。
- ファイル2での検索:
grep -nを使用してFILE2内でSEARCH_STRING2を検索し、行番号付きで結果を一時ファイルに出力します。- 検索結果の行数を数え、2行以上の場合はメッセージを追加します。
- 結果の表示と一時ファイルの削除:
- 最終的に一時ファイルの内容を表示し、一時ファイルを削除します。
このスクリプトを利用する際は、FILE1 および FILE2 のパスと、SEARCH_STRING1 および SEARCH_STRING2 の値を適切に設定してください。また、スクリプトファイルに実行権限を付与するために chmod +x script_name.sh を実行することを忘れないでください。

コメント