在扩展名为

我的shell脚本是

FromDir="/FromDir" 
ToDir="/ToDir" 

for Filename in *.txt
  do
  awk 'NR%2000==1{x="'${ToDir}/${Filename}'_"++i".txt";}{print >x}' $Filename
  done
exit

我已经尝试过

Filename=$(ls *.txt | cut -f 1 -d '.')
awk 'NR%2000==1{x="'$ToDir/$Filename'_"++i".txt";}{print >x}' $Filename

awk 'NR%2000==1{x="'${ToDir}/${Filename} | cut -f 1 -d '.''_"++i".txt";}{print >x}' $Filename

awk命令增加扩展后的文件数。扩展之前我需要它

示例输出

Filename.txt_1.txt
Filename.txt_2.txt
Filename.txt_3.txt

我的预期输出

Filename_1.txt
Filename_2.txt
Filename_3.txt
ping950726 回答:在扩展名为

结合上面的许多评论,合并为单个awk作业。

FromDir="/FromDir" 
ToDir="/ToDir" 

awk -v "outdir=$toDir" '
FNR==1 { suffix=0 }
FNR%2000==1 {
    if ( outfile ) close(outfile)
    outfile = outdir "/" gensub(".txt$","_" ++suffix ".txt",1,FILENAME)
}
{ print > outfile}
' *.txt

不确定OP示例代码中未引用FromDir。注意“关闭”,一次只能打开一个文件。

本文链接:https://www.f2er.com/3165529.html

大家都在问