我有一个这样的文件:剪切命令换行符
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