Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.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
Linux 将变量放入其中的切割浓缩_Linux_Shell_Awk_Scripting_Cut - Fatal编程技术网

Linux 将变量放入其中的切割浓缩

Linux 将变量放入其中的切割浓缩,linux,shell,awk,scripting,cut,Linux,Shell,Awk,Scripting,Cut,我已将以下代码编码: Fileformat=$2 Fileresource=$1 for (( j=1; j<=3; j++ )) { First_Pos_resource=$(awk -F ';' 'NR=='$j'{print $3}' "${Fileformat}") Length_resource=$(awk -F ';' 'NR=='$j'{print $4}' "${Fileformat}") last_Po

我已将以下代码编码:

Fileformat=$2
Fileresource=$1

 for (( j=1; j<=3; j++ ))
       {


        First_Pos_resource=$(awk -F ';' 'NR=='$j'{print $3}' "${Fileformat}")
        Length_resource=$(awk -F ';' 'NR=='$j'{print $4}' "${Fileformat}")
        last_Pos_resource=$((Pos_resource+Length_resource))
        range=${First_Pos_resource}"-"${last_Pos_resource}
        OUtput_line=${OUtput_line}$(cut -c${range} "${Fileresource}")

       }
            echo $OUtput_line  >> OutputFile.txt
Fileresource:它包含一行字符串,我们从中生成输出文件

看起来是这样的:

sfdssdffgdfglkjdfsld lkjlkkfdssdfssdf
综上所述:文件资源+文件格式=OutputFile.txt

解释

first;1;15;2 + sfdssdffgdfglkjdfsld lkjlkkfdssdfssdf = jd
second;3;6;4 + sfdssdffgdfglkjdfsld lkjlkkfdssdfssdf = ffgd
blabla;7;23;5 + sfdssdffgdfglkjdfsld lkjlkkfdssdfssdf = dfssd
所以在连接之后,我应该在输出文件中有这个结果:output.txt如下所示

jdffgddfssd
我已经对上面的代码行进行了编码,但是在连接后生成的空白有一个问题

显示但不需要的输出:

jd-ffgd-dfssd

错误消息显示变量设置不正确。如果无法访问精确的输入文件,很难调试它;但是复制/粘贴数据会为我生成如下值:

range=15-+2
range=6-+4
range=23-+8
这显然是错误的。如果希望shell对值执行算术运算,则需要使用
算术表达式

不管怎样,你的循环看起来完全是由内而外的。此外,将整个脚本重构为单个Awk脚本将使其更加高效和简单

awk -F ';' 'NR==FNR { res = res $0; next }
  { printf "%s", substr(res, $3, $4) }
  END { print "" }' resource fileformat.txt
我没有得到您指定的确切输出,但我可能在数据中有一些复制/粘贴错误,或者误解了您希望如何准确计算子字符串偏移量


(我忍不住纠正了“resource”的拼写。

谢谢@tripleee我已经纠正了代码和帖子,但是我得到了一个空格我修复了它,OUtput_line=${OUtput_line}$(cut-c${range}{Fileresource}'.'awk'NR==1{print$1}')这是一个可怕的修复。只需将代码重构为单个Awk脚本。