【发布时间】:2018-07-26 12:28:37
【问题描述】:
我已经搜索并帮助了我的方式,但现在我被卡住了。 基本上我有一个像这样的文本文件:
"02/01/2018 08:34:15"|"02/01/2018 08:34:16"|"Completed"|"70000000000006632150"|"Activation"||"22200995102577"|"External System"|"ALFUNC ASBS"|"ASBS Shpk"|"VF Shop Asbs 1_209"|"**580**"|"1600"||"355672079017"||"1600"|"590279"|"588679"|7|101369|102577|-1|200158
"02/01/2018 08:34:03"|"02/01/2018 08:34:04"|"Completed"|"70000000000006632146"|"Activation"||"22200995102577"|"External System"|"ALFUNC ASBS"|"ASBS Shpk"|"VF Shop Asbs 1_209"|"**601**"|"1100"||"355696369862"||"1106"|"591379"|"590279"|7|101369|102577|-1|200158
"02/01/2018 08:33:17"|"02/01/2018 08:33:18"|"Completed"|"70000000000006632123"|"Activation"||"22200995102577"|"External System"|"ALFUNC ASBS"|"ASBS Shpk"|"VF Shop Asbs 1_209"|"**319**"|"1100"||"355694523968"||"1103"|"592479"|"591379"|7|101369|102577|-1|200158
我想用与代码匹配的名称替换粗体值。我已经创建了一个这样的查找文件
"319"|"AS003"
"601"|"Z 477"
"580"|"Z 478"
"101"|"AS006"
我正在使用 awk 搜索第一个文件,从第二个文件中找到相应的值,替换它并将所有内容写入一个新文件。 一切都适用于 319 和 101,但不适用于其他,我怀疑这是由于 Z 和代码之间的空间。 在我正在使用的代码下方:
tail -n +2 file_name | while read line ####used tail _n +2 to exclude header
do
code=$(echo $line | awk -F'|' '{print $12}' FS=\|)
cn=$(awk -v CID=$code '$1==CID {print $2}' FS=\| lookup_file)
echo $line|awk -v CN=$cn 'BEGIN {FS=OFS="|"} {$12=CN} 1' >> test2.txt
done
对于查找文件中带有空格的行,我在终端中收到此错误:
awk: code_value"
awk: ^ unterminated string
它没有写入输出文件
欢迎提出任何建议...
【问题讨论】:
-
一团糟-_-。祝你好运
标签: awk