次の機能を使用してテキストファイルをフィルタリングし、新しい形式に整理します。
Unixリダイレクトコマンドを使用して>
新しいファイルを作成します。
新しいファイルをすべて生成したくない場合はどうすればよいですか?
(例: ${file}_final_1.txt, ${file}ただ${パターン}.txt)
コマンドを使用していない後に削除しますかrm
?
filter(){
cat ${file}_1.txt | grep -v ${pattern} > ${file}_final_1.txt
cat ${file}_1.txt | grep ${pattern} > ${file}_only_${pattern}.txt
cat ${file}_only_${pattern}.txt | nawk -F '|' '{ print $NF}' > ${pattern}_TS.txt
paste ${pattern}_TS.txt ${file}_only_${pattern}.txt > ${pattern}_TS_file.txt
cat ${pattern}_TS_file.txt | grep "|${DT}|" | grep ${pattern} | sort -r | head -1 > ${file}_f.txt
cat ${file}_f.txt >> ${file}_final_1.txt
dos2unix ${file}_final_1.txt ${file}_final.txt
}
答え1
- 必要に応じてパイプラインを接続できます。
cat ${file}_1.txt | grep ${pattern} > ${file}_only_${pattern}.txt
cat ${file}_only_${pattern}.txt | nawk -F '|' '{ print $NF}' > ${pattern}_TS.txt
に取り替えることができる
cat ${file}_1.txt | grep ${pattern} | nawk -F '|' '{ print $NF}' > ${pattern}_TS.txt
ちょっと…もちろん、コマンドラインには限界がありますが、とても大きいです。これにより、getconf ARG_MAX
文字数がわかります。
- 一部のアプリケーションがパイプへの入力を許可していない場合、または複数のファイルで簡単に使用できる場合...いつでも一時ファイルを一時ディレクトリにダンプできます。したがって、
filter()
関数は次のパターンに従うことができます。
filter(){
TEMP_DIR=/tmp/dir_for_this_task_`date +%s`
mkdir $TMP_DIR
CUR_DIR=`pwd`
cd $TMP_DIR
.... your code with temp files
cd $CUR_DIR
rm -r $TMP_DIR
}
pushd/popd
現在のディレクトリを覚えて一時ディレクトリに戻ることもできます。