Linux 使用Bash逐行编辑文本

Linux 使用Bash逐行编辑文本,linux,bash,awk,sed,Linux,Bash,Awk,Sed,亲爱的社区: 我在使用bash进行文本编辑工作时遇到了麻烦。下面是我要做的:使用如下输入文件: A B 0 C D 1 E F 2 C D 2 我想根据前3列的信息附加另一列,这将是一个带条件判断的逐行任务 具体来说,对于给定的行,如果第三列中的值为0,则附加值将是第一列中值的两个副本,如果第三列中的值为1,则附加值将是第一列的一个副本和第二列的一个副本,如果第三列中的值为2,则第二列中的值将是两个副本。在一天结束时,我希望有这样一个: A B 0 AA C D 1 CD E F 2 FF C

亲爱的社区:

我在使用bash进行文本编辑工作时遇到了麻烦。下面是我要做的:使用如下输入文件:

A B 0
C D 1
E F 2
C D 2
我想根据前3列的信息附加另一列,这将是一个带条件判断的逐行任务

具体来说,对于给定的行,如果第三列中的值为0,则附加值将是第一列中值的两个副本,如果第三列中的值为1,则附加值将是第一列的一个副本和第二列的一个副本,如果第三列中的值为2,则第二列中的值将是两个副本。在一天结束时,我希望有这样一个:

A B 0 AA
C D 1 CD
E F 2 FF
C D 2 DD
如有任何建议,我们将不胜感激。谢谢

许龙

使用awk:

awk '$3==0{$4=$1$1} $3==1{$4=$1$2} $3==2{$4=$2$2} 1' file
A B 0 AA
C D 1 CD
E F 2 FF
C D 2 DD
使用awk:

awk '$3==0{$4=$1$1} $3==1{$4=$1$2} $3==2{$4=$2$2} 1' file
A B 0 AA
C D 1 CD
E F 2 FF
C D 2 DD
使用awk:

awk '$3==0{$4=$1$1} $3==1{$4=$1$2} $3==2{$4=$2$2} 1' file
A B 0 AA
C D 1 CD
E F 2 FF
C D 2 DD
使用awk:

awk '$3==0{$4=$1$1} $3==1{$4=$1$2} $3==2{$4=$2$2} 1' file
A B 0 AA
C D 1 CD
E F 2 FF
C D 2 DD
使用sed(仅用于教育用途,awk可能是最好的方法):

使用sed(仅用于教育用途,awk可能是最好的方法):

使用sed(仅用于教育用途,awk可能是最好的方法):

使用sed(仅用于教育用途,awk可能是最好的方法):

这可能适用于您(GNU-sed):

这将根据第三列追加第四列(如果行有三列以上,则插入)。

这可能适用于您(GNU-sed):

这将根据第三列追加第四列(如果行有三列以上,则插入)。

这可能适用于您(GNU-sed):

这将根据第三列追加第四列(如果行有三列以上,则插入)。

这可能适用于您(GNU-sed):


这将根据第三列追加第四列(如果该行有三列以上,则插入)。

只需将您的描述直接翻译为
awk
中的
if
语句即可。有什么问题吗?请展示您所做的尝试,我们将帮助您了解错误所在。只需将您的描述直接翻译成
awk
中的
if
语句即可。有什么问题吗?请展示您所做的尝试,我们将帮助您了解错误所在。只需将您的描述直接翻译成
awk
中的
if
语句即可。有什么问题吗?请展示您所做的尝试,我们将帮助您了解错误所在。只需将您的描述直接翻译成
awk
中的
if
语句即可。有什么问题吗?请展示你的尝试,我们将帮助你理解你的错误。不,这是正确的答案,无法想象为什么它会被否决+1谢谢你,我猜有人对问题(或答案)的解释不正确。不,这是正确的答案,无法想象为什么会被否决+1谢谢你,我猜有人对问题(或答案)的解释不正确。不,这是正确的答案,无法想象为什么会被否决+1谢谢你,我猜有人对问题(或答案)的解释不正确。不,这是正确的答案,无法想象为什么会被否决+1谢谢你,我想有人并没有解释这个问题(或答案)正确。如果该行包含3列以上,则可能会导致错误匹配,因为替代命令未定位到该行的开头,并且它假定第一列和第二列的长度为单个字符。如果该行包含3列以上,则可能会导致错误匹配,因为替代命令未锚定到行首,它还假定第一列和第二列的长度为单个字符。如果行包含超过3列,则可能会导致错误匹配,因为替代命令未锚定到行首,它还假定第一列和第二列的长度为单个字符字符长。如果行包含超过3列,这可能会导致错误匹配,因为替代命令未定位到行的开头,并且它假定第一列和第二列为单个字符长。