mar*_*ary 0 text-processing replace
我有一个由这些行组成的文件:
199240050;0180209199240050;0
199240241;0180209199240241;0
199240207;0180209199240207;0
199240400;0180209199240400;0
Run Code Online (Sandbox Code Playgroud)
如果最后一个数字是“0”,我应该用“Active”替换它,如果它是“1”,我应该用“Inactive”替换它。
我已经尝试过,sed
但行中间出现的“;0”也发生了变化。
它应该在 linux bash 脚本中使用。
我尝试了 DopeGhoti 给出的解决方案,但失败了:
$ sed 's/0$/active/;s/1$/inactive/' myLines.txt
800600346 078136521 active
Run Code Online (Sandbox Code Playgroud)
而输入文件的格式不应该改变。
第二种解决方案在末尾附加“;active”,而不替换:
$ awk -F\; 'BEGIN {OFS=";"} { if( $3 == 1 ) { print $1,$2,"inactive" } else { print $1,$2,"active" } }' myLines.txt
800010654 0295445503 0;;active
Run Code Online (Sandbox Code Playgroud)
而George Vasiliou 的也失败了:
$ awk '$NF?$NF="active":$NF="inactive"' FS=';' OFS=';' myLines.txt
active
active
active
active
Run Code Online (Sandbox Code Playgroud)
对于名为 的文件中的给定数据input
:
$ awk -F\; 'BEGIN {OFS=";"} { if( $3 == 1 ) { print $1,$2,"inactive" } else { print $1,$2,"active" } }' input
199240050;0180209199240050;active
199240241;0180209199240241;active
199240207;0180209199240207;active
199240400;0180209199240400;active
Run Code Online (Sandbox Code Playgroud)
或者,使用sed
:
$ sed 's/\;0$/active/;s/\;1$/inactive/' input
199240050;0180209199240050;active
199240241;0180209199240241;active
199240207;0180209199240207;active
199240400;0180209199240400;active
Run Code Online (Sandbox Code Playgroud)