Perl

Perl 搜尋和替換

  • February 26, 2010

如何使用搜尋和替換來更改文件的內容。

我需要能夠將“全部變為無”和/或“全部變為無”,而不必每次都手動執行數百行。

下面是一個範例文本文件,右側有行號。我已經知道如何打開和關閉文件以進行寫入。

線條

1 define_filter absolute_minimal_filter ——- 所有

2 define_filter atma_basic_filter ——– —– 無

3 define_filter atma_communication_filter – 所有

4 define_filter atma_health_filter ————-無

5 定義過濾器 atma_misc_filter ————— 所有

6 定義過濾器 atma_performance_filter —- 無

7 定義過濾器 atma_supplemental_filter —- 無

用精心挑選的字元串代替“temp”(在兩個地方):

sed 's/all/temp/g;s/none/all/g; s/temp/none/g' input_file > output_file

或者如果 “all” 和 “none” 從未出現在同一行並且總是結束該行,則沒有臨時字元串:

sed 's/all$/none/;t;s/none$/all/' input_file > output_file

出於興趣,Perl 解決方案與 sed 解決方案非常相似:

perl -pi.bak -e 's/all$/none/ || s/none$/all/' input_file

編輯:我錯過了“||” 第一次。作為單獨的語句,第二個將撤消第一個。哦!

引用自:https://serverfault.com/questions/116992