[英]In linux, find and replace the salary from L3 to Employee files in all occurrences within a directory
在 linux 中,查找并替换目录中所有出现的 L3 到 Employee 文件中的薪水
L3values.txt
Emp id | emp name | salary
1001 | Raghu | 12000
1002 | Geetha | 18000
Employeefile1.txt
Emp id | emp name | Age | Address| salary
1001 | Raghu | 25 | some address | 10000
1002 | Geetha | 30 | some address | 15000
Employeefile2.txt
Emp id | emp name | Age | Address| salary
1001 | Raghu | 25 | some address | 10000
1002 | Geetha | 30 | some address | 15000
1001 | Raghu | 25 | some address | 10000
$ gawk -F' \\| ' 'BEGIN {OFS=" | "} NR==FNR {id[$1]=$3; next} $0 { print $1,$2,$3,$4,id[$1] > FILENAME ".tmp" } ENDFILE {system("mv " FILENAME ".tmp " FILENAME " 2>/dev/null")}' values.txt file1.txt file2.txt
[编辑]
首先,编辑file1.txt
和file2.txt
的第一行。 改变这个:
Emp id | emp name | Age | Address| salary
至
Emp id | emp name | Age | Address | salary
或者您可以运行以下命令:
$ gawk -F'\\|' 'BEGIN {OFS=" | "}{for(i=1;i<=NF;i++) {sub(/^ */,"",$(i)); sub(/ *$/,"",$(i))}print $0 > FILENAME ".tmp"} ENDFILE {system("mv " FILENAME ".tmp " FILENAME) }' values.txt file1.txt file2.txt
这是我得到的 output:
文件1.txt
Emp id | emp name | Age | Address | salary
1001 | Raghu | 25 | some address | 12000
1002 | Geetha | 30 | some address | 18000
文件2.txt
Emp id | emp name | Age | Address | salary
1001 | Raghu | 25 | some address | 12000
1002 | Geetha | 30 | some address | 18000
1001 | Raghu | 25 | some address | 12000
或者,如果您希望每行之间有空格,则可以使用它。
$ gawk -F' \\| ' 'BEGIN {OFS=" | "} NR==FNR {id[$1]=$3; next} $0 { print $1,$2,$3,$4,id[$1]"\n" > FILENAME ".tmp" } ENDFILE {system("mv " FILENAME ".tmp " FILENAME " 2>/dev/null")}' values.txt file1.txt file2.txt
文件1.txt
Emp id | emp name | Age | Address | salary
1001 | Raghu | 25 | some address | 12000
1002 | Geetha | 30 | some address | 18000
文件2.txt
Emp id | emp name | Age | Address | salary
1001 | Raghu | 25 | some address | 12000
1002 | Geetha | 30 | some address | 18000
1001 | Raghu | 25 | some address | 12000
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.