我是Unix中的新手,我想編寫腳本讀取文件並用其他詞替換文件中的某些單詞。替換操作並不難。但是,如何通過Unix腳本讀取文件的內容和「工作」,以及如何將結果寫入新文件?使用Unix或Perl腳本讀取和寫入文件
我應該使用哪些命令?
我是Unix中的新手,我想編寫腳本讀取文件並用其他詞替換文件中的某些單詞。替換操作並不難。但是,如何通過Unix腳本讀取文件的內容和「工作」,以及如何將結果寫入新文件?使用Unix或Perl腳本讀取和寫入文件
我應該使用哪些命令?
必須有一百萬和一個在線教程來做到這一點在任何語言。使用sed的這個很簡單:
sed 's/foo/replacement/' in.txt > out.txt
或者作爲一個Perl的一行:
perl -ne 's/foo/replacement/g; print' in.txt > out.txt
而且在Perl腳本:
use warnings;
use strict;
open my $file, '<', 'in.txt' or die $!;
open my $out, '>', 'out.txt' or die $!;
while(<$file>){
s/foo/replacement/g;
print $out "$_\n";
}
--- in.txt ---
foo
bar
baz
one
two
three
在unix中,您可以讀取文件並從t中寫入文件他沒有編程就使用shell和bash腳本。
例如
echo "the quick brown fox jumps over the lazy cat" >test.txt
會寫在的test.txt文件這個文本。
cat test.txt >test_copy.txt
將讀取該文件,並將其寫入test_copy.txt
這不是非常有用,因爲CP是打字少,但...
您可以添加少許應用程序之間:
cat test.txt | perl -p -e 's/cat/dog/' >corrected_test.txt
這將調用perl來替換錯誤的動物到相應的一個。參數-p告訴perl在所有輸入行上執行命令並將結果輸出到輸出。
利用這些樂高積木,您可以構建有用的大型應用程序。
例如創建fix_cat.sh文件(這將是一個的bash腳本)
#!/bin/bash
cat $1 \
| perl -n -p -e 's/cat/dog/' \
> $2
,做使用chmod + X fix_cat.sh,使bash腳本可執行文件。 (在線路末端的\意味着讓同一行繼續在下一行,讀取更容易一點,並讓您可隨時隨地在之間添加更正。)
現在你可以
$./fix_cat.sh test.txt new_text.txt
你會得到更正文本new_text.txt
祝你好運。
@RobEarl感謝-n -p修復。我不知道-p包含-n。每天學習。 –
您可以嘗試Perl的一個班輪:
perl -p -e 's/pattern/replace/g' /path/to/infile > /path/to/outfile
你可以就地更換使用-i
標誌:
perl -pi -e 's/pattern/replace/g' /path/to/infile
爲什麼'chomp'並重新添加'\ N'上輸出? –