如何通过awk更改一列并在一行中添加其他列

use*_*033 4 awk shell-script

我有一个包含以下记录的文件 MDD.TXT。文件:MDD.TXT

0|ABC|055309|20120929053309|11965150   
0|ABC|061434|20120929063434|11155537  
0|ABC|070228|20120929073228|11965150  
0|ABC|082213|20120929583213|11965150  
0|ABC|083950|20120929983950|11965150  
0|ABC|084112|20120929083112|11965150
Run Code Online (Sandbox Code Playgroud)

现在我想用“XYZ”替换第二列,并想在所有记录中添加两列文件名和“成功”。所需的输出应如下:

0|XYZ|055309|20120929053309|11965150|MDD.TXT|SUCCESS
0|XYZ|061434|20120929063434|11155537|MDD.TXT|SUCCESS
0|XYZ|070228|20120929073228|11965150|MDD.TXT|SUCCESS
0|XYZ|082213|20120929583213|11965150|MDD.TXT|SUCCESS
0|XYZ|083950|20120929983950|11965150|MDD.TXT|SUCCESS
0|XYZ|084112|20120929083112|11965150|MDD.TXT|SUCCESS
Run Code Online (Sandbox Code Playgroud)

tac*_*omi 6

您可以使用sed,以及

$ sed -e 's/\bABC\b/XYZ/g' -e 's/$/|MDD.TXT|SUCCESS/g' MDD.TXT
Run Code Online (Sandbox Code Playgroud)

直接修改文件

$ sed -i -e 's/\bABC\b/XYZ/g' -e 's/$/|MDD.TXT|SUCCESS/g' MDD.TXT
Run Code Online (Sandbox Code Playgroud)

保留原始文件并将想要的输出重定向到其他

$ sed -e 's/\bABC\b/XYZ/g' -e 's/$/|MDD.TXT|SUCCESS/g' MDD.TXT >> MDD_MODIFFIED.TXT
Run Code Online (Sandbox Code Playgroud)