我不确定是否正确理解您的需求,但是
我以这种方式对此进行了测试:
perl -0pwe "s,\nbeer/name,|,g" <<<"beer/name: The Horseman's Ale"$'\nbeer/beerId: 33061\nbeer/brewerId: 14359\nbeer/ABV: 5.20\n\nbeer/name: blah beer\nbeer/beerId: 33045\nbeer/brewerId: 14678'
在命令行上。
输出:
beer/name: The Horseman's Ale
beer/beerId: 33061
beer/brewerId: 14359
beer/ABV: 5.20
|: blah beer
beer/beerId: 33045
beer/brewerId: 14678
cat
通过确保测试流程替换 perl 部分:
cat <<<"beer/name: The Horseman's Ale"$'\nbeer/beerId: 33061\nbeer/brewerId: 14359\nbeer/ABV: 5.20\n\nbeer/name: blah beer\nbeer/beerId: 33045\nbeer/brewerId: 14678' | sed 's/^/ /'
输出:
beer/name: The Horseman's Ale
beer/beerId: 33061
beer/brewerId: 14359
beer/ABV: 5.20
beer/name: blah beer
beer/beerId: 33045
beer/brewerId: 14678
所以从那里我可以轻松地点击up, Ctrl+A并使用left, right, Ctrl+left和/或Ctrl+right到达位置来修改你的行......
一旦你的输出符合你的需要,你可以简单地更换你的开关:
perl -0pwe '...' -i.bak path/filename
或者构建一个 perl 脚本:
perltidy <<< 's,\nbeer/name,|,g'
sed '1i#!/usr/local/bin/perl -0pwi.bak\nuse strict;' <(
perltidy <<< 's,\nbeer/name,|,g') >myscript.pl