我有一個這樣的文件:剪切命令換行符
one
two
three
four
我想利用在bash腳本循環,以掃描行的文件行。以前我使用cut
,但我無法給cut
命令提供新行分隔符,我該怎麼辦?
這樣它不工作:
cut -d'\n' -f1
什麼建議嗎?
我有一個這樣的文件:剪切命令換行符
one
two
three
four
我想利用在bash腳本循環,以掃描行的文件行。以前我使用cut
,但我無法給cut
命令提供新行分隔符,我該怎麼辦?
這樣它不工作:
cut -d'\n' -f1
什麼建議嗎?
使用cat
爲串聯或顯示。這裏不需要它:
while read line ; do
echo "$line"
done < file
cat FILE|while read line; do # 'line' is the variable name
echo "$line" # do something here
done
或(見註釋):
while read line; do # 'line' is the variable name
echo "$line" # do something here
done < FILE
[UUOC(http://en.wikipedia.org/wiki/Cat_%28Unix%29#Useless_use_of_cat) - 使用'而做...
這不是無用的,這可能是浪費(閱讀本段後),但它也更易讀IMO。 – 0xC0000022L 2012-03-06 16:34:13
我的意見是「cut」使用'\ n'作爲其默認分隔符。 如果你想使用切,我有兩種方法:
cut -d^M -f1 file_cut
我使^ M通過點擊輸入Ctrl + V之後。另一種方法是
cut -c 1- file_cut
這有幫助嗎?
不幸的是,以上都沒有爲我工作(bash,版本4.2.45)。 – 2013-06-16 17:53:53
我發現自己同樣的問題,這個工作對我來說:
cat file.cut | cut -d$'\n' -f1
或者:
cut -d$'\n' -f1 file.cut
這對我來說很好:)謝謝 – Sina 2015-09-05 10:08:50
只需使用:
echo -n `cut ...`
這抑制了\ n在end
因此,索姆已經提供了很好的答案(可能更好)。但是看到原始問題的表述,想要使用BASH for循環,讓我感到驚訝的是,沒有人提到Field分離器IFS改變的解決方案。這是一個純bash的解決方案,就像接受讀線
old_IFS=$IFS
IFS='\n'
for field in $(<filename)
do your_thing;
done
IFS=$old_IFS
我同意這一點,但這比「cut」方法慢得多。 – 2018-01-11 06:15:02