나는 awk를 처음 접했고 이것을 수행하는 awk 스크립트를 작성할 수 있는지 모르겠습니다.
정렬해야 할 데이터 파일이 수백 개 있습니다. 각각에 대해 다음 한 줄을 사용합니다.
awk 'ORS=NR%3?" ":"\n" ' file1.tex > file1_sorted.tex
awk 'ORS=NR%3?" ":"\n" ' file2.tex > file2_sorted.tex
...
필요한 출력을 얻습니다. 그러나이 작업을 자동화하고 각 파일을 가져오고 작업을 적용하고 해당 정렬 된 파일을 작성하는 스크립트를 갖고 싶습니다.
도움을 주시면 감사하겠습니다!
awk
코드 를 수정하면 단일 awk
프로세스로 셸 루프없이 해결할 수 있습니다 .
awk 'FNR==1{if(o)close(o);o=FILENAME;sub(/\.tex/,"_sorted.tex",o)}{ORS=FNR%3?" ":"\n";print>o}' *.tex
아름다움이 아니라 훨씬 더 빠릅니다.
설명이 같은 의견에 요청했다.
FNR
( f ile n umber 또는 r ecord)는 NR
( n umber 또는 r ecord) 와 유사 하지만 NR
은 모든 입력 레코드의 연속 시퀀스 번호 이지만 FNR
새 입력 파일 처리가 시작되면 1로 재설정됩니다.
에 대한 gawk
4.0 유일한 대안 FNR==1
은 BEGINFILE
특수 패턴입니다.
awk '
FNR==1{ # first record of an input file?
if(o)close(o); # was previous output file? close it
o=FILENAME;sub(/\.tex/,"_sorted.tex",o) # new output file name
}
{
ORS=FNR%3?" ":"\n"; # set ORS based on FNR (not NR as in the original code)
print>o # print to the current output file
}
' *.tex
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다