새로 생성된 파일을 리디렉션하기 위해 rm을 사용하지 않고 UNIX를 제거합니다.

새로 생성된 파일을 리디렉션하기 위해 rm을 사용하지 않고 UNIX를 제거합니다.

다음 기능을 사용하여 텍스트 파일을 필터링하고 새로운 형식으로 구성합니다.

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

  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문자 수를 알 수 있습니다.

  1. 일부 응용 프로그램이 파이프의 입력을 허용하지 않거나 여러 파일과 함께 사용하기 쉬운 경우... 언제든지 임시 파일을 임시 디렉터리에 덤프할 수 있습니다. 따라서 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현재 디렉터리를 기억하고 임시 디렉터리로 돌아갈 수도 있습니다 .

관련 정보