在每行末尾附加索引变量

时间:2014-06-21 15:42:40

标签: bash shell sh

我试图在我拥有的文件的每一行的末尾追加一个索引变量。但是我不想丢失textFile中的转义字符,因此无法再次回显到文件中。

这是我尝试的内容:

while read p; do               
                tempCom+=$p
                tempCom+=$indexVar
                echo $tempCom >> otherFile.txt               
                tempCom=""
done < result.txt

我在追求的是:

Read:
"asdasdasdasdasdasd\ asdasd/asda"
"qweqweqweqweqweqwe\ qweqwe/qweq"

Output:
"asdasdasdasdasdasd\ asdasd/asda" 1
"qweqweqweqweqweqwe\ qweqwe/qweq" 2

请注意,indexVar是存储在别处的索引,并不一定与其追加的行相对应。

3 个答案:

答案 0 :(得分:3)

您的问题很可能是引用问题。另请注意IFS=语句中的-rread选项。

while IFS= read -r p
    tempCom+=$p$indexVar
    printf '%s\n' "$tempCom" >> otherFile.txt # Observe the quotes
    tempCom=
done < result.txt

答案 1 :(得分:2)

如果您只想将行号附加到最后,为什么不使用awk

awk '{print $0, "\t", NR}' < file.txt

编辑1:听起来你想使用paste(假设你想逐行加入)

paste file1.txt file2.txt > fileresults.txt

编辑2:您可以使用sed:

sed "s|$|${indexVar}|" input

答案 2 :(得分:1)

使用-r命令的read选项,以便保留反斜杠。

while read -r p; do