Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/variables/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
String 在AWK中,如何在行首插入变量值作为字符串_String_Variables_Awk_Insert - Fatal编程技术网

String 在AWK中,如何在行首插入变量值作为字符串

String 在AWK中,如何在行首插入变量值作为字符串,string,variables,awk,insert,String,Variables,Awk,Insert,问题解决:这是由于隐藏的ctrl-Ms。我使用以下awk代码删除它们: awk '{ gsub("\r", ""); print $0;}' 我尝试在匹配的起始行插入一个变量作为字符串 更新的示例,在&&&&&&&行之间,有点长,但需要解释我的代码。我试图从每个案例中提取一些信息,每个案例都有一个独特的案例,即SP 15 xxxx。我想使用old_case变量在每行诊断的前面插入病例编号 &&&&&& MEDICAL RECORD | SURGICAL PA

问题解决:这是由于隐藏的ctrl-Ms。我使用以下awk代码删除它们:

awk '{ gsub("\r", ""); print $0;}'
我尝试在匹配的起始行插入一个变量作为字符串

更新的示例,在&&&&&&&行之间,有点长,但需要解释我的代码。我试图从每个案例中提取一些信息,每个案例都有一个独特的案例,即SP 15 xxxx。我想使用old_case变量在每行诊断的前面插入病例编号

&&&&&&

MEDICAL RECORD |                   SURGICAL PATHOLOGY       Pg  1 of 2 

PATHOLOGY REPORT      Accession No. SP 15 1111 

Submitted by:                               Date obtained: 

Specimen (Received ):
RIGHT, RIGHT RIGHT RIGHT

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

PATHOLOGY REPORT         Accession No. SP 15 1111

Gross description:
The specimen is received in one formalin filled container, labeled

Microscopic Diagnosis:
     Lung, right right right right, left left 
         DX:  CHANGES CHANGES CHANGES
              NO EVIDENCE OF MALIGNANCY 
              (PLEASE SEE DESCRIPTION)

/es/ signature, M.D.
&&&&&&

MEDICAL RECORD |                   SURGICAL PATHOLOGY       Pg  1 of 2 

PATHOLOGY REPORT      Accession No. SP 15 1111 

Submitted by:                               Date obtained: 

Specimen (Received ):
RIGHT, RIGHT RIGHT RIGHT

=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=

PATHOLOGY REPORT         Accession No. SP 15 1111

Gross description:
The specimen is received in one formalin filled container, labeled

Microscopic Diagnosis:
     Lung, right right right right, left left 
         DX:  CHANGES CHANGES CHANGES
              NO EVIDENCE OF MALIGNANCY 
              (PLEASE SEE DESCRIPTION)

/es/ signature, M.D.
我的整个剧本如下:

#! /bin/awk -f

BEGIN {  old_case = "0000"; }

/Accession No./  {if (old_case != $7) {old_case = $7; print "Acc#",$5,$6,$7 > "output"} else {}};            
/Microscopic Diagnosis:/ {flag=1;next} /\/es\// || /SUPPLEMENTARY/ {flag=0} flag {print old_case,$0 > "output"};

END { }
我得到的结果是:

Acc# SP 15 1111
1111
      Lung, right right right right, left left 
1111
          DX:  CHANGES CHANGES CHANGES
1111
               NO EVIDENCE OF MALIGNANCY
1111
               (PLEASE SEE DESCRIPTION)
1111
1111
似乎每次打印变量old_case时都会添加一个新的换行符。另一方面,如果我在下面的代码中只使用字符串测试而不是变量

/Microscopic Diagnosis:/ {flag=1;next} /\/es\// {flag=0} flag {print "test",$0 > "output"};
结果如下,这就是我想要得到的:


我使用的是Mac OSX 10.9.5

很抱歉,我无法立即提供答案,但例如,如果您的数据在一个文件中,例如data.txt,并运行这个cat data.txt | awk'/NO./{case=$2;print Number,$2}/CCC/{print case$1}'将在mac上使用bash版本3.2.57或4.3.30打印出您期望的内容。您的数据中可能有一个隐藏字符导致了问题?你能发布整个脚本和数据吗?你的输入文件是在Windows上生成的,因此包含control-Ms。运行cat-v查看它们,运行dos2unix或类似程序删除它们。Ed Morton,你完全正确。问题是由Control-Ms引起的。非常感谢!这个问题应该被删除吗?管理员,请删除我的OP,因为这个问题或多或少是不相关的。