亲爱的stackoverflow社区,
我在使用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
任何建议表示赞赏。感谢。
旭龙
答案 0 :(得分:3)
使用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
答案 1 :(得分:0)
使用sed(仅限教育用途,awk可能是最好的方法):
sed 's/\(.\) \(.\) 0/\1 \2 0 \1\1/;s/\(.\) \(.\) 1/\1 \2 1 \1\2/;s/\(.\) \(.\) 2/\1 \2 2 \2\2/'
答案 2 :(得分:0)
这可能适合你(GNU sed):
sed -r '/^(\S+)(\s+)(\S+)\s+0/s//&\2\1\1/;/^(\S+)(\s+)(\S+)\s+1/s//&\2\1\3/;//^(\S+)(\s+)(\S+)\s+2/s//&\2\3\3/' file
这将附加第四列(如果行有三列以上,则插入),具体取决于第三列。