如何从文本文件中追加和打印数字?

时间:2016-10-08 03:27:46

标签: linux bash list printf text-files

我需要从file.txt开始,其中包含以下条目:

1
2
3
4
5

我需要打印以下内容:

1,100
2,100
3,100
4,100
5,100

我尝试了这个,但收到了无效的号码错误:

printf '%d,100\n' "$(< file.txt)"

5 个答案:

答案 0 :(得分:1)

您可以使用

while read in; do echo "$in,100"; done < file.txt

您的错误是由printf一次获取整个文件引起的,而不是逐行获取。

答案 1 :(得分:1)

这是少数报价&#34;中很少出现的报价之一。观察:

$ cat file.txt
1
2
3
4
5
$ var=$(< file.txt)
$ echo "$var"        # Quotes preserve original whitespace
1
2
3
4
5
$ echo $var          # No quotes reduce all whitespace to single spaces
1 2 3 4 5

引号为echo&#34;请参阅&#34;只是一个参数,即格式化的文件内容。如果没有引号,则每一行都成为echo的参数,并且它们仅以空格分隔打印。

所以,你可以用

来解决你的问题
$ printf '%d,100\n' $(< file.txt)
1,100
2,100
3,100
4,100
5,100

另一个解决方案是使用sed:

$ sed 's/$/,100/' file.txt
1,100
2,100
3,100
4,100
5,100

每行代替$行的末尾,100

答案 2 :(得分:1)

您可以使用awk:

$ awk '{printf "%s,100\n", $0}' file
1,100
2,100
3,100
4,100
5,100

答案 3 :(得分:0)

怎么样:

( set -f; set -- $(< file.txt)
  printf '%d,100\n' "$@" )

答案 4 :(得分:0)

seq 6 | awk '$0=$0",100"'  
1,100
2,100
3,100
4,100
5,100
6,100