我不知道要正確地理解你的需求,但
上的命令行
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
所以,從那裏我可以easely打了,Ctrl + 一個和使用離開,右,按Ctrl +左和 /或按Ctrl +權到達位置來修改你行...
一旦你輸出符合您的需要,你可以簡單的更換您的交換機:
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
我無法重現你的問題。在我的系統上,該文件被* not *刪除。 –
謝謝。我應該說「文件中的所有內容都被刪除了」。實際的文件仍然存在,它只是沒有內容。 – user2896837
雖然我必須給你同樣的答案。在我的系統中,空行和'beer/name'被替換爲'|',其餘文件內容保持不變。 –