繁体   English   中英

Bash连接来自带布尔值文件的行

[英]Bash concatenate line from file w/ boolean

我一直在尝试逐行读取文件,并输出每一行的值和布尔结果。

文本文件的内容

082843ab-c1e5-4729-8c03-2cec11996f01
09180b12-21b3-4bdb-a27b-ef9c026909f3

用于解析文件的脚本

#!/bin/bash

my_file="${1}"

declare -a myarray
let i=0
while IFS=$'\n' read -r line_data; do
    myarray[i]="${line_data}"
    ((++i))
done < $my_file

force_transmission="true"
let i=0
while (( ${#myarray[@]} > i ));do
    new_var=${myarray[i++]}
    combined_var="$new_var $force_transmission"
    echo $combined_var

    #this will print out the external id(file)
    #printf "${myarray[i++]}\n"
done

Expectataion

082843ab-c1e5-4729-8c03-2cec11996f01 true
09180b12-21b3-4bdb-a27b-ef9c026909f3 true

实际

true3ab-c1e5-4729-8c03-2cec11996f01
trueb12-21b3-4bdb-a27b-ef9c026909f3

任何帮助将不胜感激,我已经尝试过像这样的5种变化

您的输入文件包含DOS换行符。 在打印时,这些命令会将光标发送回该行的开头,从而随后覆盖内容。

在输入文件上使用dos2unix ,或修改以下行:

new_var=${new_var%$'\r'} # remove $'\r', a CR character, from the end of new_var

如果那是您要执行的操作,请使用一种专用工具代替bash脚本

更新以消除CR ,只是

$ sed 's/\r$/ true/' file

082843ab-c1e5-4729-8c03-2cec11996f01 true
09180b12-21b3-4bdb-a27b-ef9c026909f3 true

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM