我需要从file.txt
开始,其中包含以下条目:
1
2
3
4
5
我需要打印以下内容:
1,100
2,100
3,100
4,100
5,100
我尝试了这个,但收到了无效的号码错误:
printf '%d,100\n' "$(< file.txt)"
答案 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