如何让“tr”命令忽略换行符?

如何让“tr”命令忽略换行符?

我想用一个空格替换多个空格。我习惯tr这样做。但它也会用空格替换换行符。我该如何避免这种情况?

代码:

tr -s [:space:] ' '

输入:

He  llo
Wor  ld
how  are  you

所需输出:

He llo
Wor ld
how are you

我的输出:

He llo Wor ld how are you

答案1

:space:匹配水平和垂直空格。使用:blank:来仅匹配水平空格。

答案2

只需在末尾使用tr -s [:space:]without将连续的空格压缩为一个。' '

或者您可以使用以下命令之一:

tr命令:

tr -s ' '         < input.txt > output.txt
tr -s '[:blank:]' < input.txt > output.txt
tr -s \           < input.txt > output.txt

sed命令:

sed 's/  */ /g'             < input.txt > output.txt
sed 's/ \{1,\}/ /g'         < input.txt > output.txt
sed -E 's/ +/ /g'           < input.txt > output.txt
sed -E 's/[[:space:]]+/ /g' < input.txt > output.txt

awk命令:

awk '{$1=$1}1' < input.txt > output.txt
awk '$1=$1""'  < input.txt > output.txt

相关内容