需要替换unix文件中的字符

时间:2015-10-12 09:59:53

标签: linux unix sed

我的unix机器中有一个文件,其中包含一些如下所示的行,

 6024|OH|MIDDLEBURG HEIGHTS|MIDDLEBURG HEIGHTS|6925 SOUTHLAND DRIVE||1|44130|4408840505|8-9|9-9|11-6|
 6025|OH|NORTH OLMSTED|NORTH OLMSTED|26035 LORAIN ROAD ||1|44070|4407342180|8-9|9-9|11-6|
 6026|MI|MADISON HEIGHTS|MADISON HEIGHTS|32251 JOHN R. ||1|48071|2485858880|8-9|9-9|10-6|
 6027|NY|AMHERST|AMHERST|4224 MAPLE ROAD ||1|14226|7168626660|8-9|9-9|11-6|
 6028|MI|KENTWOOD|KENTWOOD|4160 28TH STREET S.E. ||2|49512|6169565555|8-9|9-8|10-6|
 6029|PA|ERIE|ERIE|905 MILLCREEK MALL ||1|16565|8148684100|8-9|9-9|11-6|
 6030|OH|AKRON|AKRON|37 N. CLEVE.-MASSILLON RD ||1|44333|3306664550|8-9|9-8|11-6|
 6031|OH|HOLLAND|HOLLAND|6520 CENTERS DRIVE ||1|43528|4198672925|8-9|9-9|11-6|
 6032|MI|STERLING HEIGHTS|STERLING HEIGHTS|37600 VAN DYKE ||1|48312|5868263767|8-9|9-9|10-6|
 6033|NY|COLONIE|COLONIE|1814 CENTRAL AVENUE ||1|12205|5184523371|8-9|9-9|10-6|
 6034|NY|ROCHESTER|ROCHESTER|3333 WEST HENRIETTA ROAD ||1|14623|5852920660|8-9|9-9|11-6|
 6036|WI|MILWAUKEE|MILWAUKEE|9088 N. GREEN BAY ROAD ||1|53209|4143628000|8-9|9-8|10-6|

在此,我想将第7个管道分隔字段值替换为3,仅针对某些第8个分隔字段值。

我试过这样,

   awk -F\| '{print $7,$8}'  Load_Jira3665_OffDepot.txt_bak | egrep 23454|23113|63011|63011|53072|55369|00969|50266|78130'  | awk '{print $1}' | sed s/2/3/g

但这只是替换了输出屏幕,并且更改未在原始文件中生效。我怎么能做到这一点?

1 个答案:

答案 0 :(得分:1)

要将屏幕上的输出传输到文件,请使用>在您的unix命令后跟您要将输出传输到的文件名之后。    请查看此链接了解更多信息:Redirect all output to file