[英]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.