我的文件中有一行', '
,我想用new line
代替
输入:
['siteed01pg|10.229.16.153|10.229.0.0|19|test / crt|BACKUP_MUT_SD Vlan981 (PVLAN 1981) New Backup Subnet #1 (site SD)', 'siteed01pg|10.129.135.53|10.129.135.0|26|test / crt|Fmer bopreprodback Vlan 754', '
[...]
我的sed命令:
sed "s/\', \'/\n/g"
输出:
['siteed01pg|10.229.16.153|10.229.0.0|19|test / crt|BACKUP_MUT_SD Vlan981 (PVLAN 1981) New Backup Subnet #1 (site SD)nsiteed01pg|10.129.135.53|10.129.135.0|26|test / crt|Fmer bopreprodback Vlan 754n
在我的输出中,换行符已替换为字符n
为什么?
答案 0 :(得分:0)
您可以像这样使用sed
来替换\n
:
sed "s/', '/"$'\\\n'"/g" file
在这里,我们使用$'\n'
在替换中使用换行符。我们最终使用了“ $'\\ n'due to use of double quotes around
sed`命令。
根据man bash
:
$'string'形式的单词经过特殊处理。该单词扩展为字符串,并按ANSI C标准的规定替换了反斜杠转义的字符
否则使用多行sed
:
sed "s/', '/\\
/g" file
这将同时适用于bash上的gnu和POSIX sed版本。
PS:如果您使用的是gnu sed
,那么一个简化的命令将是:
sed "s/', '/\n/g" file
['siteed01pg|10.229.16.153|10.229.0.0|19|test / crt|BACKUP_MUT_SD Vlan981 (PVLAN 1981) New Backup Subnet #1 (site SD)
siteed01pg|10.129.135.53|10.129.135.0|26|test / crt|Fmer bopreprodback Vlan 754
[...]