簡體   English   中英

sed / awk-更新文件中的字符

[英]sed/ awk - update characters in file

我有一個文本文件,其中有5列,用逗號隔開,如下所示

449,615,43,57,8
308,617,43,57,3
345,558,43,57,11

但是,在生成這些文件的代碼中發現了一個錯誤,現在我需要更新文件的最后一列 ,以便

if i > 10 i = i + 1 else i

我從未使用過awk和sed,但給我的印象是,使用這些工具應該微不足道。 任何人都可以給我一些指示嗎? 謝謝

編輯 :以上的預期輸出:

449,615,43,57,8
308,617,43,57,3
345,558,43,57,12

使用awk

awk 'BEGIN{FS=OFS=","}{$NF=($NF>10?$NF+1:$NF)}1' file

$ cat file
449,615,43,57,8
308,617,43,57,3
345,558,43,57,11
$ awk 'BEGIN{FS=OFS=","}{$NF=($NF>10?$NF+1:$NF)}1' file
449,615,43,57,8
308,617,43,57,3
345,558,43,57,12

可以減少到anubhava在評論中建議的

$ awk 'BEGIN{FS=OFS=","} $NF>10{$NF++} 1' file
449,615,43,57,8
308,617,43,57,3
345,558,43,57,12

單線:

awk -F, -v OFS="," '{$NF+=$NF>10}7' 

測試

kent$  echo "449,615,43,57,8
308,617,43,57,3
345,558,43,57,11"|awk -F, -v OFS="," '{$NF+=$NF>10}7'   
449,615,43,57,8
308,617,43,57,3
345,558,43,57,12
awk -F, -v OFS="," '{if($5>10)$5=$5+1}1' input.txt

輸出:

449,615,43,57,8
308,617,43,57,3
345,558,43,57,12

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM