Bash 将输出从字符串转换为整数
我正在尝试编写一个小工具,它可以合并unix服务器上的一些文件。我现在被迫将20个文件合并为1个。所有这些文件都包含一个标头和尾部,需要删除该标头和尾部,并且新创建的文件需要有一个标头和尾部。标题和预告片对我来说有点棘手(必须是334个字符)。除了预告片,我什么都能做。特别的是,拖车应该包含足够多的线 我将我的小工具设置为:Bash 将输出从字符串转换为整数,bash,shell,unix,Bash,Shell,Unix,我正在尝试编写一个小工具,它可以合并unix服务器上的一些文件。我现在被迫将20个文件合并为1个。所有这些文件都包含一个标头和尾部,需要删除该标头和尾部,并且新创建的文件需要有一个标头和尾部。标题和预告片对我来说有点棘手(必须是334个字符)。除了预告片,我什么都能做。特别的是,拖车应该包含足够多的线 我将我的小工具设置为: //loop to cat all 20 files (remove header and trailer) //generate header from date //
//loop to cat all 20 files (remove header and trailer)
//generate header from date
//execute wc -l on generated file and add +1 (bc trailer is missing)
//append trailer with executed wc -l information in it
HFFP20190 *
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
YYYYYYYYYYYYYYYYYYYYYXXXXXXXXXXXXXX YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
ABCDEFGHIJKLMNOPQWERSTUVWXYZ ASDFASDFASDFASDFASDFASDFASDFASDFASDFASD
TFFP2019000031795 *
HFFP20190 *
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
YYYYYYYYYYYYYYYYYYYYYXXXXXXXXXXXXXX YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
ABCDEFGHIJKLMNOPQWERSTUVWXYZ ASDFASDFASDFASDFASDFASDFASDFASDFASDFASD
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
YYYYYYYYYYYYYYYYYYYYYXXXXXXXXXXXXXX YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
ABCDEFGHIJKLMNOPQWERSTUVWXYZ ASDFASDFASDFASDFASDFASDFASDFASDFASDFASD
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
YYYYYYYYYYYYYYYYYYYYYXXXXXXXXXXXXXX YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
ABCDEFGHIJKLMNOPQWERSTUVWXYZ ASDFASDFASDFASDFASDFASDFASDFASDFASDFASD
...
TFFP2019000163109 *
我尝试了几个命令将+1添加到我的拖车中,但没有一个命令正常工作:
这就是我到目前为止所做的:
lineCount=echo more someFile.dat | wc -l
echo $lineCount
//echo "$((lineCount + 1))" -> 1
//echo "$(($lineCount + 1))" -> 1
//let "lineCount+=1" -> 1
//$lineCount=lineCount+1 -> won't work
//$lineCount=$lineCount+1 -> won't work
//x=$lineCount+1 -> won't work
这是echo$lineCount
的输出(没有任何更改或任何内容),数字前似乎有两个空格
163108
我的目标是,数字应该是163109,而不是163108
编辑:
我的输入文件如下所示:
//loop to cat all 20 files (remove header and trailer)
//generate header from date
//execute wc -l on generated file and add +1 (bc trailer is missing)
//append trailer with executed wc -l information in it
HFFP20190 *
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
YYYYYYYYYYYYYYYYYYYYYXXXXXXXXXXXXXX YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
ABCDEFGHIJKLMNOPQWERSTUVWXYZ ASDFASDFASDFASDFASDFASDFASDFASDFASDFASD
TFFP2019000031795 *
HFFP20190 *
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
YYYYYYYYYYYYYYYYYYYYYXXXXXXXXXXXXXX YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
ABCDEFGHIJKLMNOPQWERSTUVWXYZ ASDFASDFASDFASDFASDFASDFASDFASDFASDFASD
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
YYYYYYYYYYYYYYYYYYYYYXXXXXXXXXXXXXX YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
ABCDEFGHIJKLMNOPQWERSTUVWXYZ ASDFASDFASDFASDFASDFASDFASDFASDFASDFASD
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
YYYYYYYYYYYYYYYYYYYYYXXXXXXXXXXXXXX YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
ABCDEFGHIJKLMNOPQWERSTUVWXYZ ASDFASDFASDFASDFASDFASDFASDFASDFASDFASD
...
TFFP2019000163109 *
HFFP是头,TFFP是尾->头和尾之间的主要区别是最后一个数字(31795),它包含文件中的行数。此合并后的输出应如下所示:
//loop to cat all 20 files (remove header and trailer)
//generate header from date
//execute wc -l on generated file and add +1 (bc trailer is missing)
//append trailer with executed wc -l information in it
HFFP20190 *
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
YYYYYYYYYYYYYYYYYYYYYXXXXXXXXXXXXXX YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
ABCDEFGHIJKLMNOPQWERSTUVWXYZ ASDFASDFASDFASDFASDFASDFASDFASDFASDFASD
TFFP2019000031795 *
HFFP20190 *
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
YYYYYYYYYYYYYYYYYYYYYXXXXXXXXXXXXXX YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
ABCDEFGHIJKLMNOPQWERSTUVWXYZ ASDFASDFASDFASDFASDFASDFASDFASDFASDFASD
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
YYYYYYYYYYYYYYYYYYYYYXXXXXXXXXXXXXX YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
ABCDEFGHIJKLMNOPQWERSTUVWXYZ ASDFASDFASDFASDFASDFASDFASDFASDFASDFASD
XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX
YYYYYYYYYYYYYYYYYYYYYXXXXXXXXXXXXXX YYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYYY
ABCDEFGHIJKLMNOPQWERSTUVWXYZ ASDFASDFASDFASDFASDFASDFASDFASDFASDFASD
...
TFFP2019000163109 *
您可以尝试以下方法:
# get only the lines from wc command
lineCount=$(wc -l someFile.dat | cut -d' ' -f1)
# add 1
((lineCount++))
echo "$lineCount"
因为
lineCount=echo
将字符串“echo”指定给变量。全部
lineCount=echo more someFile.dat | wc -l
运行命令
more someFile.dat | wc -l
将输出设置为标准输出,而不是您的变量,同时临时分配lineCount=“echo”
仅用于此单个命令的持续时间
对于记录,捕获变量的标准输出的语法为
lineCount=$(wc -l <someFile.dat)
通配符someFiles*
需要替换为与您的输入文件以正确顺序匹配的内容;也许*.dat
?我知道那些双斜杠不是注释,语法不正确,但我有一些格式问题,这就是为什么我将#替换为//Please,用预期输出发布一些示例数据。片刻-我正在一起设置一些内容。您可以将wc-l someFile.dat | cut-d'-f1
替换为wc-l