Linux shell脚本中的剪切和导出命令
我正在编写一个shell脚本,其中包含以下代码。 我不理解这些行,主要是cut命令和export命令。谁能帮我。。。 另外,请告诉我一个更好的linux命令参考。 提前谢谢Linux shell脚本中的剪切和导出命令,linux,shell,unix,Linux,Shell,Unix,我正在编写一个shell脚本,其中包含以下代码。 我不理解这些行,主要是cut命令和export命令。谁能帮我。。。 另外,请告诉我一个更好的linux命令参考。 提前谢谢 # determine sum of 60 records awk '{ if (substr($0,12,2) == "60" || substr($0,12,2) == "78") \ print $0 }'< /tmp/checks$$.1 > /tmp/checks$$
# determine sum of 60 records
awk '{
if (substr($0,12,2) == "60" || substr($0,12,2) == "78") \
print $0
}'< /tmp/checks$$.1 > /tmp/checks$$.2
rec_sum =`cut -c 151-160 /tmp/checks$$.2 | /u/fourgen/cashnet/bin/sumit`
export rec_sum
让我展示一下我的主要剧本
awk 'BEGIN{OFS=""} {if (substr($0,12,2) == "60" && substr($0,151,1) == "-") \
{ print substr($0,1,11), "78", substr($0,14) } \
else \
{ print $0 } \
}' > /tmp/checks$$.1
# determine count of non-header record
rec_cnt=`wc -l /tmp/checks$$.1`
rec_cnt=`expr "$rec_cnt - 1"`
export rec_cnt
# determine sum of 60 records
awk '{ if (substr($0,12,2) == "60" || substr($0,12,2) == "78") \
print $0 }'< /tmp/checks$$.1 > /tmp/checks$$.2
rec_sum=`cut -c 151-160 /tmp/checks$$.2 | /u/fourgen/cashnet/bin/sumit`
export rec_sum
# make a new header record and output it
head -1 /tmp/checks$$.1 | awk '{ printf("%s%011.11d%05.5d%s\n", \
substr($0,1,45), rec_sum, rec_cnt, substr($0,62)) }' \
rec_sum="$rec_sum" rec_cnt="$rec_cnt"
# output everything else sorted by tran code
grep -v "%%%%%%%%%%%" /tmp/checks$$.1 | cut -c 1-150 | sort -k 1.12,13
awk'BEGIN{OFS=”“}{if(substr($0,12,2)=“60”和&substr($0151,1)=“-”)\
{打印substr($0,1,11),“78”,substr($0,14)}\
否则\
{打印$0}\
}'>/tmp/checks$$.1
#确定非标题记录的计数
rec_cnt=`wc-l/tmp/checks$$.1`
rec_cnt=`expr“$rec_cnt-1”`
出口记录
#确定60条记录的总和
awk'{if(substr($0,12,2)=“60”| | substr($0,12,2)=“78”)\
打印$0}'/tmp/checks$$.2
rec_sum=`cut-c 151-160/tmp/checks$$.2 |/u/fourgen/cashnet/bin/sumit`
出口收入总额
#制作一个新的标题记录并输出它
head-1/tmp/checks$$.1 | awk'{printf(“%s%011.11d%05.5d%s\n”\
substr($0,1,45),rec_sum,rec_cnt,substr($0,62))}'\
rec_sum=“$rec_sum”rec_cnt=“$rec_cnt”
#输出按传输代码排序的所有其他内容
grep-v“%tmp/checks$$.1 | cut-c1-150 | sort-k1.12,13”
cut-c
从文件中的给定位置剪切文本,在本例中,文件中的字符151到160/tmp/checks$$.2
。该字符串通过管道传输到名为submit
的代码,该代码生成一些输出。
然后将该输出分配给环境变量rec\u sum
。export
命令使此变量可通过系统使用,例如在另一个shell脚本中使用
编辑:
如果提交脚本中只有这些内容,那么它只需将传递给它的字符串(看起来必须是一个数字)添加到某个总值,并打印传递给它的数字。看起来该脚本中必须有更多的代码,否则这将有点过于复杂 比什么好?你看过手册了吗?例如
mancut
?我不是linux用户,我不知道什么是手册页!我也没有执行这些脚本。我只是在PHP.Google中为“mancut”重写它,或者在shellYa中键入它,我得到了文档。让我参考一下。感谢MatteoI在获得此参考资料之前在谷歌上搜索;但是我没有找到这个人请看我的主要剧本prep_chkI我想我已经给了你相当多的帮助来解释“你的”剧本的各个部分。如果我是你,我会在网上找到关于awk的教程。它看起来非常复杂和棘手,但一旦你掌握了窍门,它就会非常强大。此外,你总是有写得很好的手册页,还有谷歌。如果您被卡住,请在终端中使用脚本中的单个命令。
awk 'BEGIN{OFS=""} {if (substr($0,12,2) == "60" && substr($0,151,1) == "-") \
{ print substr($0,1,11), "78", substr($0,14) } \
else \
{ print $0 } \
}' > /tmp/checks$$.1
# determine count of non-header record
rec_cnt=`wc -l /tmp/checks$$.1`
rec_cnt=`expr "$rec_cnt - 1"`
export rec_cnt
# determine sum of 60 records
awk '{ if (substr($0,12,2) == "60" || substr($0,12,2) == "78") \
print $0 }'< /tmp/checks$$.1 > /tmp/checks$$.2
rec_sum=`cut -c 151-160 /tmp/checks$$.2 | /u/fourgen/cashnet/bin/sumit`
export rec_sum
# make a new header record and output it
head -1 /tmp/checks$$.1 | awk '{ printf("%s%011.11d%05.5d%s\n", \
substr($0,1,45), rec_sum, rec_cnt, substr($0,62)) }' \
rec_sum="$rec_sum" rec_cnt="$rec_cnt"
# output everything else sorted by tran code
grep -v "%%%%%%%%%%%" /tmp/checks$$.1 | cut -c 1-150 | sort -k 1.12,13