我有一個帶回車的文件和一個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應該是什麼,即你想要完全匹配什麼?向我們展示您的輸入和期望輸出的示例。 –