我想複製行從一個文件到另一個到文件字符串:和寫入前導空格
count=1
while read -r i
do
echo $i
((count++))
done < "file1" > file2
,但如果他們在我沒有得到任何線前導空格的文件2文件1。
我想複製行從一個文件到另一個到文件字符串:和寫入前導空格
count=1
while read -r i
do
echo $i
((count++))
done < "file1" > file2
,但如果他們在我沒有得到任何線前導空格的文件2文件1。
這是因爲IFS
(內部字段分隔符)的值會去掉這些空格。我相信,默認情況下它會根據空格和換行符進行分隔。解決方法是臨時設置IFS
等於換行符。
#!/bin/bash
IFS="
"
count=1
while read -r i || [[ -n "$i" ]]
do
echo $i
((count++))
done < "file1" > file2
unset IFS
可以使用line
命令:
count=1
while i=$(line)
do
echo "$i"
((count++))
done < "file1" > file2
然而,這是比read
顯著慢,因爲read
是一個bash內置和line
是可執行文件。
謝謝。但是,唯一不是nix的,而是Windows。 =) – WHITECOLOR
謝謝!還有一個問題:在這個循環中,如果原始文件中的文本的最後一個字符串後面沒有沒有被複制到file2的換行符。我能做些什麼? – WHITECOLOR
我已經編輯了我的答案來解決這個問題。該值將被讀入該變量,但該時段將退出。這解決了這個問題。 – Buggabill
非常感謝你=) – WHITECOLOR