[解決済み】ファイルを一行ずつ読み込んで変数に値を代入する【重複あり
2022-03-23 18:38:35
質問
以下の.txtファイルがあります。
Marco
Paolo
Antonio
それを一行ずつ読んで、一行ごとに.txtの行の値を変数に代入したいのです。仮に私の変数が
$name
という流れになります。
- ファイルから最初の行を読み込む
-
アサイン
$name
= "Marco"。 -
でいくつかのタスクを実行します。
$name
- ファイルから2行目を読み込む
-
アサイン
$name
= "パオロ"。
解決方法は?
以下は、引数として渡されたファイルを一行ずつ読み込むものです。
while IFS= read -r line; do
echo "Text read from file: $line"
done < my_filename.txt
これは 標準形 ループでファイルから行を読み取るためのものです。説明します。
-
IFS=
(またはIFS=''
) は、先頭や末尾のホワイトスペースが切り取られるのを防ぎます。 -
-r
バックスラッシュ・エスケープが解釈されないようにする。
または、bashファイルのヘルパースクリプト、例のコンテンツに入れることができます。
#!/bin/bash
while IFS= read -r line; do
echo "Text read from file: $line"
done < "$1"
上記をスクリプトに保存する場合、ファイル名
readfile
であれば、次のように実行できる。
chmod +x readfile
./readfile filename.txt
ファイルでない場合は 標準的なPOSIXテキストファイル (=改行文字で終了していない)、ループは、末尾の部分行を処理するように修正することができます。
while IFS= read -r line || [[ -n "$line" ]]; do
echo "Text read from file: $line"
done < "$1"
ここです。
|| [[ -n $line ]]
で終わらない限り、最終行が無視されるのを防ぐことができます。
\n
(このため
read
はEOFに遭遇すると0以外の終了コードを返します)。
ループ内のコマンドも標準入力から読み込む場合、ファイルディスクリプタは
read
は他のものに変更することができます。
標準ファイル記述子
)、例えば
while IFS= read -r -u3 line; do
echo "Text read from file: $line"
done 3< "$1"
(Bash以外のシェルでは
read -u3
を使用します。
read <&3
の代わりに)
関連
-
[解決済み] grepの出力に含まれる重複を削除する
-
[解決済み] シェルで、「2>&1」はどういう意味ですか?
-
[解決済み] Bashで文字列をデリミターで分割するには?
-
[解決済み] Bashでコマンドの出力に変数を設定するにはどうすればよいですか?
-
[解決済み] Bashでファイルの中身をループする
-
[解決済み] bashで "cat << EOF "はどのように動作するのですか?
-
[解決済み] キーと値のペアのファイルから環境変数を設定する
-
[解決済み] ディレクトリ内のファイルをループしてパスを変更し、ファイル名にサフィックスを追加する方法
-
[解決済み] Colorized grep -- マッチをハイライトしてファイル全体を表示する
-
[解決済み】Bashでファイル名と拡張子を抽出する。
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】シェルスクリプトで整数式が期待されるエラーが発生する
-
[解決済み】予期しないトークン 'fi' 付近の構文エラー
-
[解決済み】if [](角括弧)の「[: 引数が多すぎる」エラーの意味)
-
[解決済み] configureコマンドが見つからない cygwin
-
[解決済み] Bashスクリプトで引数を反復処理する方法
-
[解決済み] zip警告 - 名前が一致しない
-
[解決済み] cmake execute_process COMMAND [重複]。
-
[解決済み] bashスクリプトで変数の束縛を解除
-
npm err インストールエラーの解決策
-
[解決済み] Bashでファイルの中身をループする