Windows gc replace 显示 \n 而不是新行
Windows gc replace shows \n instead of new line
这是我在 PowerShell 5.1 中使用的:
(gc test.txt) | ForEach-Object {$_ -replace '^(.*)(\r?\n|$)', '^(.*)(\r?\n|$)', 'this is a repl \ntest tex test'} | Set-Content test2.txt
这是test.txt
:
ok
ok
ok
这是当前的 test2.txt
:
this is a repl ok\ntest tex ok test
虽然应该是:
first ok
second ok third
我也试过了,但出现以下错误:
sed -re "s|^(.*)(\r?\n|$)|this is a repl \ntest tex test" test.txt > test2.txt
错误:
/usr/bin/sed: -e expression #1, char 19: unknown option to `s'
我也试过了(这在 Linux 中有效,但在 Windows 中无效):
sed -e "s|^(.*)(\r?\n|$)|this is a repl \ntest tex test" -i test.txt
/usr/bin/sed: -e expression #1, char 19: unknown option to `s'
如何查找和替换正则表达式?
我搜索了 google 和 Whosebug 并尝试了一些命令,但它们在我的问题中显示 \n
如上。
PowerShell 中的单引号内不支持字符串转义序列。 '\n
是文字 \
后跟文字 n
字符的序列。
需要用双引号,然后用反引号+n
换行,即"`n"
。所以,使用
"this is a repl ``ntest tex ` test`"
这是我在 PowerShell 5.1 中使用的:
(gc test.txt) | ForEach-Object {$_ -replace '^(.*)(\r?\n|$)', '^(.*)(\r?\n|$)', 'this is a repl \ntest tex test'} | Set-Content test2.txt
这是test.txt
:
ok
ok
ok
这是当前的 test2.txt
:
this is a repl ok\ntest tex ok test
虽然应该是:
first ok
second ok third
我也试过了,但出现以下错误:
sed -re "s|^(.*)(\r?\n|$)|this is a repl \ntest tex test" test.txt > test2.txt
错误:
/usr/bin/sed: -e expression #1, char 19: unknown option to `s'
我也试过了(这在 Linux 中有效,但在 Windows 中无效):
sed -e "s|^(.*)(\r?\n|$)|this is a repl \ntest tex test" -i test.txt
/usr/bin/sed: -e expression #1, char 19: unknown option to `s'
如何查找和替换正则表达式?
我搜索了 google 和 Whosebug 并尝试了一些命令,但它们在我的问题中显示 \n
如上。
PowerShell 中的单引号内不支持字符串转义序列。 '\n
是文字 \
后跟文字 n
字符的序列。
需要用双引号,然后用反引号+n
换行,即"`n"
。所以,使用
"this is a repl ``ntest tex ` test`"