【发布时间】:2014-07-23 04:16:42
【问题描述】:
我想替换第一行中存在的字符串,尽管它也存在于文件的其余行中。我怎样才能通过 shell 脚本做到这一点?有人可以帮我解决这个问题。我的代码如下。我正在从文件中提取第一行,之后我不知道如何进行替换。任何帮助,将不胜感激。谢谢。
伙计们-我想替换 $line 中存在的字符串并将新行写入同一位置的同一文件中。
代码:
while read line
do
if [[ $v_counter == 0 ]] then
echo "$line"
v_counter=$(($v_counter + 1));
fi
done < "$v_Full_File_Nm"
样本数据:
输入
BUXT_CMPID|MEDICAL_RECORD_NUM|FACILITY_ID|PATIENT_LAST_NAME|PATIENT_FIRST_NAME|HOME_ADDRESS_LINE_1|HOME_ADDRESS_LINE_2|HOME_CITY|HOME_STATE|HOME_ZIP|MOSAIC_CODE|MOSAIC_DESC|DRIVE_TIME| buxt_pt_apnd_20140624_head_5records.txt
100106086|5000120878|7141|HARRIS|NEDRA|6246 PARALLEL PKWY||KANSAS CITY|KS|66102|S71|Tough Times|2|buxt_pt_apnd_20140624_head_5records.txt
输出
BUXT_CMPID|MEDICAL_RECORD_NUM|FACILITY_ID|PATIENT_LAST_NAME|PATIENT_FIRST_NAME|HOME_ADDRESS_LINE_1|HOME_ADDRESS_LINE_2|HOME_CITY|HOME_STATE|HOME_ZIP|MOSAIC_CODE|MOSAIC_DESC|DRIVE_TIME| SRC_FILE_NM
100106086|5000120878|7141|HARRIS|NEDRA|6246 PARALLEL PKWY||KANSAS CITY|KS|66102|S71|Tough Times|2|buxt_pt_apnd_20140624_head_5records.txt
从上面的示例数据中,我需要将 buxt_pt_apnd_20140624_head_5records.txt 替换为 SRC_FILE_NAME 字符串。
【问题讨论】:
-
UNIX shell 是一个调用工具的环境。处理文本文件的 UNIX 工具是 awk。因此,编写一个 awk 脚本并从 shell 调用它。
-
您发布的示例数据仅包含 1 行,但它在您的文本中听起来像是在后续行中不替换字符串的解决方案很重要,因此您应该发布一些示例输入/输出以证明该方面您的要求。 ALso - 如果目标字符串在您的第一行出现多次怎么办?如果它作为另一个字符串的一部分出现怎么办?