繁体   English   中英

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

[英]How to append and print Numbers from a text file?

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

1
2
3
4
5

我需要打印以下内容:

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

我尝试了此操作,但是收到无效的数字错误:

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

你可以用

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

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

这是“引号过多”的罕见情况之一。 观察:

$ 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 “仅见”一个参数,即格式化文件的内容。 如果没有引号,则每一行都将成为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

您可以使用awk:

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

怎么样:

( set -f; set -- $(< file.txt)
  printf '%d,100\n' "$@" )
seq 6 | awk '$0=$0",100"'  
1,100
2,100
3,100
4,100
5,100
6,100

暂无
暂无

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

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