Sed 用同一行上指定的另一项替换行中的项。。如何对多行执行此操作?

Sed 用同一行上指定的另一项替换行中的项。。如何对多行执行此操作?,sed,awk,Sed,Awk,我对使用linux和命令行非常陌生,但我学习它是为了工作。我可以做大部分的基础工作,但是我被困在一些事情上 我当前有一个.txt文件,如下所示: A B 1 1 0 0 0 1 0 1 0 B F 1 0 0 1 0 1 1 0 1 F G 0 0 0 0 0 0 0 1 0 即,每行开头有两个字母-同一行中的每个数字“0”对应第一个字母,同一行中的每个数字“1”对应第二个字母。它是以空格分隔的 我想做的是用该行上的相应字母替换每个0和1 因此,上述段落将变成: A B B B B A A B

我对使用linux和命令行非常陌生,但我学习它是为了工作。我可以做大部分的基础工作,但是我被困在一些事情上

我当前有一个.txt文件,如下所示:

A B 1 1 0 0 0 1 0 1 0

B F 1 0 0 1 0 1 1 0 1

F G 0 0 0 0 0 0 0 1 0

即,每行开头有两个字母-同一行中的每个数字“0”对应第一个字母,同一行中的每个数字“1”对应第二个字母。它是以空格分隔的

我想做的是用该行上的相应字母替换每个0和1

因此,上述段落将变成:

A B B B B A A B A B A

B F B B F B F F F B F F

F F F F F F F F F F F F F

有人知道我如何使用awk或sed(或更好的方法)来实现这一点吗

谢谢大家!

使用
gsub

$ awk '{gsub(0, $1); gsub(1, $2)} 1' your_file
A B B B B B A A A A B A B A
B F F B B B F F B F F F B F
F G F F F F F F F F F F G F
  • gsub(0,$1)
    将每个
    0
    替换为
    $1
    $1
    是第一个字段
  • gsub(1,$2)
    将每个
    1
    替换为
    $2
    。第二个字段是
    $2
  • 这些命令被括在括号内,用于打印输出,并写入真实条件,如
    1
    ,从而完成默认awk行为(
    print$0
    • 使用
      gsub

      $ awk '{gsub(0, $1); gsub(1, $2)} 1' your_file
      A B B B B B A A A A B A B A
      B F F B B B F F B F F F B F
      F G F F F F F F F F F F G F
      
      • gsub(0,$1)
        将每个
        0
        替换为
        $1
        $1
        是第一个字段
      • gsub(1,$2)
        将每个
        1
        替换为
        $2
        。第二个字段是
        $2
      • 这些命令被括在括号内,用于打印输出,并写入真实条件,如
        1
        ,从而完成默认awk行为(
        print$0
        • 使用
          gsub

          $ awk '{gsub(0, $1); gsub(1, $2)} 1' your_file
          A B B B B B A A A A B A B A
          B F F B B B F F B F F F B F
          F G F F F F F F F F F F G F
          
          • gsub(0,$1)
            将每个
            0
            替换为
            $1
            $1
            是第一个字段
          • gsub(1,$2)
            将每个
            1
            替换为
            $2
            。第二个字段是
            $2
          • 这些命令被括在括号内,用于打印输出,并写入真实条件,如
            1
            ,从而完成默认awk行为(
            print$0
            • 使用
              gsub

              $ awk '{gsub(0, $1); gsub(1, $2)} 1' your_file
              A B B B B B A A A A B A B A
              B F F B B B F F B F F F B F
              F G F F F F F F F F F F G F
              
              • gsub(0,$1)
                将每个
                0
                替换为
                $1
                $1
                是第一个字段
              • gsub(1,$2)
                将每个
                1
                替换为
                $2
                。第二个字段是
                $2
              • 这些命令被括在括号内,用于打印输出,并写入真实条件,如
                1
                ,从而完成默认awk行为(
                print$0