11

ファイルのリストを保持するテキスト ファイルがあります。catそれらの内容をまとめたいと思います。これを行う最善の方法は何ですか?私はこのようなことをしていましたが、複雑すぎるようです:

let count=0
while read -r LINE
do
    [[ "$line" =~ ^#.*$ ]] && continue
    if [ $count -ne 0 ] ; then
        file="$LINE"
        while read PLINE
        do
            echo $PLINE | cat - myfilejs > /tmp/out && mv /tmp/out myfile.js
        done < $file
    fi
    let count++
done < tmp

コメント行をスキップして問題に遭遇していました。2 つのループを使わずに、これを行うためのより良い方法が必要です。ありがとう!

4

6 に答える 6

18

または簡単なコマンドで

cat $(grep -v '^#' files) > output
于 2012-07-23T19:59:23.990 に答える
5
#!/bin/bash

files=()
while read; do
    case "$REPLY" in
        \#*|'') continue;;
        *) files+=( "$REPLY" );;
    esac
done < input
cat "${files[@]}"

このアプローチの優れている点は次のとおりです。

  1. 唯一の外部コマンド はcat、一度だけ実行されます。
  2. 特定の行/ファイル名に対して重要な空白を維持することは非常に注意が必要です。
于 2012-07-23T20:04:50.430 に答える
3
{
  while read file
  do
    #process comments here with continue
    cat "$file"
  done
} < tmp > newfile
于 2012-07-23T19:54:40.710 に答える
1

どうcat $(cat listoffiles) | grep -v "^#"ですか?

于 2012-07-23T19:56:10.070 に答える