4

ファイルからコンテンツを収集してコマンドに入力するシェルを作成する方法は? $ コマンド < 入力ファイル 開始方法がわかりません。

4

4 に答える 4

1

wc例として使用:

$ wc < input_file > output_file

説明:

  • wc: これは、呼び出しているコマンド (またはシェル組み込み) です。
  • < input_file: 入力を読み取るinput_file
  • > output_file': write output into出力ファイル`

多くのコマンドは、入力ファイル名をコマンドライン引数の 1 つとして (を使用せずに<) 受け入れることに注意してください。次に例を示します。

  • grep pattern file_name
  • awk '{print}' file_name
  • sed 's/hi/bye/gファイル名`
于 2012-11-16T03:06:12.943 に答える
0

シェル プログラムの入力ファイル記述子を入力ファイルにポイントする必要があります。c では、int dup2(int oldfd, int newfd);newfd を oldfd のコピーにするジョブを呼び出し、必要に応じて最初に newfd を閉じることによって実現されます。
Unix/Linux では、すべてのプロセスに独自のファイル記述子があり、次のように保存されます。

0 - 標準入力 (stdin) 1 - 標準出力 (stdout) 2 - 標準エラー (stderr)

そのため、使用する入力ファイルを stdin 記述子で指定する必要があります。これが私が今月前に書いた方法です:

void ioredirection(int type,char *addr) {
    // output append redirection using ">>"
    if (type == 2) {
        re_file = open(addr, O_APPEND | O_RDWR, S_IREAD | S_IWRITE);
        type--;
    }
    // output redirection using ">"
    else if (type==1) re_file = open(addr, O_TRUNC | O_RDWR, S_IREAD | S_IWRITE);
    // input redirection using "<" or "<<"
    else re_file = open(addr, O_CREAT | O_RDWR, S_IREAD | S_IWRITE);
    old_stdio = dup(type);
    dup2(re_file, type);
    close(re_file);
}
于 2012-11-16T03:53:58.310 に答える
0

そのために使用できますxargs

たとえば、ファイル名のリストを持つファイルがあるとします。

cat your_file|xargs wc -l

wc -lコマンド でcatありxargs、ファイル内の各行を入力として渡しますwc -l

したがって、出力は、名前がinputfileに存在するすべてのファイルの行数になります。ここでの主なことはxargs、すべての行を入力として渡すことですwc -l

于 2012-11-16T12:05:05.947 に答える
0

次のコマンドを使用して、bash スクリプトの入力から読み取ることができますread

inputreader.sh

#!/bin/bash

while read line; do
    echo "$line"
done

出力

$ echo "Test" | bash ./inputreader.sh
Test
$ echo "Line 1" >> ./file; echo "Line 2" >> ./file
$ cat ./file | bash ./inputreader.sh
Line 1
Line 2
$ bash ./inputreader.sh < ./file 
Line 1
Line 2   
于 2012-11-16T11:30:53.100 に答える