我有一个带回车的文件和一个bash脚本,因为它们不起作用。我处理它们的方式是使用dos2unix。这是脚本:在bash中获取过去的回车没有更改原始文件
while IFS= read -r line; do
[[ $line =~ REGEX ]] && printf "SUCCESS"
done < <(dos2unix < file)
这样我不修改原始文件,一切都很好。我的问题是:是否有另一种方法来做同样的事情 - 越过回车而不是同时修改原始文件。
我有一个带回车的文件和一个bash脚本,因为它们不起作用。我处理它们的方式是使用dos2unix。这是脚本:在bash中获取过去的回车没有更改原始文件
while IFS= read -r line; do
[[ $line =~ REGEX ]] && printf "SUCCESS"
done < <(dos2unix < file)
这样我不修改原始文件,一切都很好。我的问题是:是否有另一种方法来做同样的事情 - 越过回车而不是同时修改原始文件。
人们可以平凡除去的后回车(当且仅当所述角色存在的话)与parameter expansion:
while IFS= read -r line && line=${line%$'\r'}; do
[[ $line =~ REGEX ]] && printf "SUCCESS"
done <file
${var%val}
膨胀到的$var
与从端部去除的字符串val
内容; $'\r'
是ANSI-C-like syntax,用于在ksh93,bash和实现扩展的其他shell中的回车符。
在Bash中,'$'\ r''需要'shopt -s extquote'(尽管它默认是启用的)。 – ephemient
永远的我应该对你保持负债先生Lifesaver! –
请帮我解决一件事。我想在** I循环之前在“文件”**上执行sed“s/\”/ \'\'/ g“。我试图在最后(与“完成”相同的行)管道它,但它没有奏效。我该怎么做,在哪里做? –
在这种情况下REGEX应该是什么,即你想要完全匹配什么?向我们展示您的输入和期望输出的示例。 –