首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >IFS=$'\n‘删除了"n“

IFS=$'\n‘删除了"n“
EN

Stack Overflow用户
提问于 2014-05-26 23:27:05
回答 2查看 219关注 0票数 2

我对"IFS=$'\n‘有问题。

代码语言:javascript
运行
复制
old_IFS=$IFS
file="Good morning
Good morning
Good morning
Good morning
Good morning"

IFS=$'\n'
for line in $file
    do
       echo $line
done
IFS=$old_IFS

当我执行脚本时:

代码语言:javascript
运行
复制
Good mor
i
g
Good mor
i
g
Good mor
i
g
Good mor
i
g
Good mor
i
g

删除"n“。我想逐行查看这些文件

EN

回答 2

Stack Overflow用户

发布于 2014-05-27 23:28:44

迭代多行数据(无论您的shell是否支持$'...')的正确方法是使用重复调用readwhile循环:

代码语言:javascript
运行
复制
while read -r; do
    echo "$REPLY"
done <<EOF
$file
EOF
票数 2
EN

Stack Overflow用户

发布于 2014-05-26 23:32:46

正如其他人所指出的,我不认为您正在使用的shell支持$'...'语法。

如果您的系统使用破折号作为sh,您应该能够通过将IFS赋值给一个空的或未赋值的变量来将其赋值给新行。例如,n=""; IFS=$n允许您按新行拆分。这是一个技巧,只有当一个空变量被解释为解释器的新行时才能起作用。

您还可以使用<<<word读取像Bash这样的shell中的here字符串。

代码语言:javascript
运行
复制
file="Good morning
Good morning
Good morning
Good morning
Good morning"

while read line; do
    echo $line
done <<<"$file"

否则,您可以从文件中逐行读取。

代码语言:javascript
运行
复制
while read -r line; do 
    echo "$line"
done < file
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/23873371

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档