【问题标题】:Extract fixed-position substrings from file [duplicate]从文件中提取固定位置的子字符串[重复]
【发布时间】:2021-05-30 08:10:11
【问题描述】:

我需要将文件中的子字符串提取到新文件中。 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 -F'|' '{print $5}' file

标签: regex bash awk cat


【解决方案1】:

将我的评论转换为答案,以便将来的访问者轻松找到解决方案。

有两种获取方式:

任何 awk 版本:

awk -F'|' '{print $5}' file

K7UKD

或使用gnu-awk:

awk -v RS='|' 'NR == 5' file

这是使用read 的bash 解决方案:

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}\|([^|]*).*/\2/' file

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-17
    • 1970-01-01
    • 2022-10-31
    相关资源
    最近更新 更多