다음 기능을 사용하여 텍스트 파일을 필터링하고 새로운 형식으로 구성합니다.
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
현재 디렉터리를 기억하고 임시 디렉터리로 돌아갈 수도 있습니다 .