2016-10-08 33 views

回答

1

這是「太多引號」中罕見的事件之一。注意:

$ 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,每行。

1

你可以使用

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

您的錯誤是由printf一次獲取整個文件造成的,而不是逐行讀取。

1

您可以使用AWK:

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