Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 将输出从字符串转换为整数_Bash_Shell_Unix - Fatal编程技术网

Bash 将输出从字符串转换为整数

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 //

我正在尝试编写一个小工具,它可以合并unix服务器上的一些文件。我现在被迫将20个文件合并为1个。所有这些文件都包含一个标头和尾部,需要删除该标头和尾部,并且新创建的文件需要有一个标头和尾部。标题和预告片对我来说有点棘手(必须是334个字符)。除了预告片,我什么都能做。特别的是,拖车应该包含足够多的线

我将我的小工具设置为:

//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