Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Awk 如何用文件B中相同位置的行替换文件A中的每一新行_Awk_Sed_Text Processing - Fatal编程技术网

Awk 如何用文件B中相同位置的行替换文件A中的每一新行

Awk 如何用文件B中相同位置的行替换文件A中的每一新行,awk,sed,text-processing,Awk,Sed,Text Processing,我有两个文件(文件A和文件B),它们包含相同数量的内容行 文件A: a_line_x a_line_y a_line_z a_line_t 文件B: b_line_x b_line_y ------------- b_line_z ---##---##--- b_line_t 我想将fileA中的换行替换为fileB中出现在相同位置的行(在示例虚线中),以便: a_line_x a_line_y ------------- a_line_z ---##---##--- a_line_t

我有两个文件(文件A和文件B),它们包含相同数量的内容行

文件A:

a_line_x
a_line_y

a_line_z

a_line_t
文件B:

b_line_x
b_line_y
-------------
b_line_z
---##---##---
b_line_t
我想将fileA中的换行替换为fileB中出现在相同位置的行(在示例虚线中),以便:

a_line_x
a_line_y
-------------
a_line_z
---##---##---
a_line_t
可以用sed或awk这样的linux命令来实现吗

编辑:要处理文件中的控制M字符并在处理之前将其删除,请尝试以下操作

awk '
{
  gsub(/\r/,"")
}
FNR==NR{
  if($0!~/[a-zA-Z]+/){
    a[++count]=$0
  }
  next
}
/^$/{
  print a[++i]
  i=i==2?0:i
  next
}
1
'  fileB  fileA
awk '
FNR==NR{
  if($0!~/[a-zA-Z]+/){
    a[++count]=$0
  }
  next
}
/^$/{
  print a[++i]
  i=i==2?0:i
  next
}
1
'  fileB  fileA


你能试试下面的吗

awk '
{
  gsub(/\r/,"")
}
FNR==NR{
  if($0!~/[a-zA-Z]+/){
    a[++count]=$0
  }
  next
}
/^$/{
  print a[++i]
  i=i==2?0:i
  next
}
1
'  fileB  fileA
awk '
FNR==NR{
  if($0!~/[a-zA-Z]+/){
    a[++count]=$0
  }
  next
}
/^$/{
  print a[++i]
  i=i==2?0:i
  next
}
1
'  fileB  fileA

awk
方法基于:


你好,谢谢你的回复。不幸的是,它没有做到我想要的。作为输出,我得到了一个与file相同的文件A@zwlayer,这对我很有效。从故障排除的角度来看,您是否可以通过运行命令
cat-v fileA
cat-v fileB
检查两个文件中是否有控制M字符,如果您找到了它们,请执行
tr-d'\r'temp&&mv temp fileA
删除它们,让我知道它是如何运行的?我已经尝试过了,但我得到了这个错误:tr:extra操作数'fileA'请尝试'tr--help'以了解更多信息。@zwlayer
tr-d'\r'temp&&mv temp fileA
通过运行这个确切的命令,您的意思是什么?很抱歉,错误现在已经消失了,但我仍然得到与文件A相同的文件output@zwlayer,不难理解,
file1
fileA
file2
fileB
(人类逻辑)