代码之家  ›  专栏  ›  技术社区  ›  Guy Sadoun

bash:将var打印到文本文件中,并在同一行末尾添加文本[duplicate]

  •  0
  • Guy Sadoun  · 技术社区  · 6 年前

    这个问题已经有了答案:

    我有这个功能,我试着在行尾加上“m m”,以防行尾不包含“mm”,它一直在行首打印。

    recursiveFindReq `pwd`/allReqTemp.txt
    while read line; do
            if [[ $line != *MM* ]]; then
                    echo $line MM >> temp2
            else
                    echo $line >> temp2
            fi
    done < allReqTemp.txt
    

    这是上面代码的输出 OUTPUT FOR CODE ABOVE

    在$line之前 MM BEFORE $LINE

    使用printf USING PRINTF

    例如: 对于输入:

    2018年7月8日08:00 2018年7月9日08:01 09:00 150

    我希望:

    2018年7月8日08:00 2018年7月9日08:01 09:00 150毫米

    但我得到:

    “mm07/2018 08:00 09/07/2018 08:01 09:00 150”

    从照片上可以看出

    成功! 我只花了两个小时

    while read -a line; do
            if [[ ${line[*]} != *MM* ]]; then
                    line[6]=MM
                    echo ${line[0]} ${line[1]} ${line[2]} ${line[3]} ${line[4]} ${line[5]} ${line[6]} >> temp2
            else
                    echo ${line[*]} >> temp2
            fi
    done < allReqTemp.txt
    
    2 回复  |  直到 6 年前
        1
  •  0
  •   karakfa    6 年前

    不知道你想做什么,但也许这可以提供一些指导。

    对于输入文件

    $ cat file
    1
    2
    3MM
    4MM
    5
    6
    

    这将产生

    $ awk '{print $0 (/MM$/?"":"MM")}' file
    
    1MM
    2MM
    3MM
    4MM
    5MM
    6MM
    

    将打印当前行( $0 )如果后缀不在行尾,则为后缀( /MM$/ )注意后缀后面不允许有空格。

        2
  •  0
  •   shaiki siegal    6 年前

    在处理每一行之前,请尝试删除该行:

    将此添加到代码中:要删除行尾字符:

    ${line/$'\n'}

       while read line; do
           new_line=${line/$'\n'}
           if [[ $new_line != *MM* ]]; then
                echo $new_line MM >> temp2
           else
                echo $new_line  >> temp2
           fi
       done < file1`