从文件中提取固定位置的子字符串
Extract fixed-position substrings from file
我需要将文件中的子字符串提取到新文件中。 Mac 或 Linux.
数据在第4个和第5个“|”之间符号。
HD|262339|9400530374||K7UKD|A|HA|12/15/2009|03/13/2020
实际的柱状位置变化很大,有时变化很大,但数据始终在第 4 个和第 5 个管道符号之间。
示例数据如上,预期输出为 K7UKD
。
我在正则表达式中尝试过各种技巧:
grep "/\|(\w+)\|/" input.txt > output.txt
正在将我的评论转换为答案,以便未来的访问者可以轻松找到解决方案。
有两种获取方式:
任何 awk 版本:
awk -F'|' '{print }' file
K7UKD
或使用gnu-awk
:
awk -v RS='|' 'NR == 5' file
这是一个 bash
解决方案,使用 read
:
IFS='|' read -ra arr <<< 'HD|262339|9400530374||K7UKD|A|HA|12/15/2009|03/13/2020' &&
echo "${arr[4]}"
K7UKD
或使用cut
:
cut -d'|' -f5 file
或使用sed
:
sed -E 's/^([^|]*\|){3}\|([^|]*).*//' file
我需要将文件中的子字符串提取到新文件中。 Mac 或 Linux.
数据在第4个和第5个“|”之间符号。
HD|262339|9400530374||K7UKD|A|HA|12/15/2009|03/13/2020
实际的柱状位置变化很大,有时变化很大,但数据始终在第 4 个和第 5 个管道符号之间。
示例数据如上,预期输出为 K7UKD
。
我在正则表达式中尝试过各种技巧:
grep "/\|(\w+)\|/" input.txt > output.txt
正在将我的评论转换为答案,以便未来的访问者可以轻松找到解决方案。
有两种获取方式:
任何 awk 版本:
awk -F'|' '{print }' file
K7UKD
或使用gnu-awk
:
awk -v RS='|' 'NR == 5' file
这是一个 bash
解决方案,使用 read
:
IFS='|' read -ra arr <<< 'HD|262339|9400530374||K7UKD|A|HA|12/15/2009|03/13/2020' &&
echo "${arr[4]}"
K7UKD
或使用cut
:
cut -d'|' -f5 file
或使用sed
:
sed -E 's/^([^|]*\|){3}\|([^|]*).*//' file