我的輸入文件的內容是貓新線
歡迎
welcome1
使用welcome2
我的劇本是
for groupline in `cat file`
do
echo $groupline;
done
我得到了以下Ø本安輸出。
welcome welcome1 welcome2
爲什麼它不打印空行。我想要理由。
我的輸入文件的內容是貓新線
歡迎
welcome1
使用welcome2
我的劇本是
for groupline in `cat file`
do
echo $groupline;
done
我得到了以下Ø本安輸出。
welcome welcome1 welcome2
爲什麼它不打印空行。我想要理由。
需要設置IFS
爲換行符\n
IFS=$"\n"
for groupline in $(cat file)
do
echo "$groupline";
done
或者把雙引號。見here用於解釋
for groupline in "$(cat file)"
do
echo "$groupline";
done
沒有與IFS多管閒事,「正確」的方法是使用而讀循環
while read -r line
do
echo "$line"
done <"file"
因爲你所做的一切都是錯誤的。你想while
不for
,你想read
,不cat
:
while read groupline
do
echo "$groupline"
done < file
The solution ghostdog74 provided是有益的,但有一個缺陷。
IFS不能使用雙引號(至少在Mac OS X),但可以使用單引號,如:
IFS=$'\n'
這是不錯的,但不是衝兼容的,這也許是更好的:
IFS='
'
的空行將會在下面的程序可以吃
IFS='
'
for line in $(cat file)
do
echo "$line"
done
但你不能醃肉加雙引號nd $(cat file)
,它會將整個文件視爲一個單獨的字符串。
for line in "$(cat file)"
如果要空一行也被處理,使用以下
while read line
do
echo "$line"
done < file
使用IFS=$"\n"
和var=$(cat text.txt)
刪除所有「N」從輸出echo $var
雙引號+1。它爲我做了正確的迴應換行符的訣竅! – 2012-08-22 14:37:05