String 在AWK中,如何在行首插入变量值作为字符串
问题解决:这是由于隐藏的ctrl-Ms。我使用以下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
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,因为这个问题或多或少是不相关的。