分割文件由子从IBM行i外壳
我有很多线,如分割文件由子从IBM行i外壳
inv_2007_43324234234.csv inv_2007_43377774234.csv
inv_2007_43999994234.csv
inv_2011_43324265765.csv
inv_2007_43324298743.csv
inv_2008_97545234234.csv
inv_2011_43888234288.csv
一个大文件...
第二部分“ '' 是那一年。
有没有办法在一年之内将文件分成几个文件? 行不排序。每年应该有一个文件,其中包含年份在线的文件。 我使用ibm i shell。
感谢到目前为止 乔吉
我试过很多次让运行命令,但现在我有我想在回答中描述的错误。 基本问题由anubhava回答。 但我有另一个崩溃我的命令的问题。
我创造我的文件与
ls > myfiles.dat
myfiles的列表中包含上述descrived的CSV文件。 如果我尝试awk命令
awk -F'_' '{out=$2 ".csv"; print > out}' myfiles.dat
使用这个名单,我得到它被命名的.csv一个CSV文件。
现在我加载myfiles.dat到我的电脑,并在记事本++中打开它。
我复制它的一部分,并创建一个新文件myfilefromnotepad.dat。
现在我从我的电脑加载新的文件到服务器,并运行命令 - 它的工作原理?
但是为什么不能awk不能与ls创建的列表一起工作?
回答:
如果AWK可用,你可以这样做:
awk -F'_' '{out=$2 ".csv"; print > out}' file
回答:
一个shell唯一的解决办法:
while read; do test -n "$REPLY" && echo $REPLY >> $(expr "$REPLY" : '\(inv_.*\)_').dat;
done < myfiles.dat
验证:
while read; do test -n "$REPLY" && echo $REPLY >> $(expr "$REPLY" : '\(inv_.*\)_').dat;
done <<END
inv_2007_43324234234.csv
inv_2007_43377774234.csv
inv_2007_43999994234.csv
inv_2011_43324265765.csv
inv_2007_43324298743.csv
inv_2008_97545234234.csv
inv_2011_43888234288.csv
END
结果:
head inv_*.dat ==> inv_2007.dat <==
inv_2007_43324234234.csv
inv_2007_43377774234.csv
inv_2007_43999994234.csv
inv_2007_43324298743.csv
==> inv_2008.dat <==
inv_2008_97545234234.csv
==> inv_2011.dat <==
inv_2011_43324265765.csv
inv_2011_43888234288.csv
以上是 分割文件由子从IBM行i外壳 的全部内容, 来源链接: utcz.com/qa/259749.html