【发布时间】:2017-04-13 01:40:08
【问题描述】:
我有一个文本文件,其中每一行都有以下结构
<six digit number>;; some text of arbitrary (non-zero) length<another six digit number>some other (possibly zero length) text
我只想从每行中提取成对的六位数字 例如,如果一行包含
234567;; some text with any number of arbitrary characters876352some other text
输出将是
234567;;876352
我使用 awk/grep/sed/bash/vim 尝试过的解决方案总数太多,无法在此处列出。以下是其中之一
#!/bin/bash
truncate --size 0 file.out
for line in "$(cat ../allwithpins)";
do
echo $line | 'match($0, /[0123456789]{6}/, ary) {print ary[0], ary[1]}' >> file.out
# echo $line
# if [[ $line =~ [0123456789]{6} ]];
# then
# echo ${BASH_REMATCH[$1]}
# #echo ${BASH_REMATCH[$1]}
# #echo ${BASH_REMATCH[$2]}
# fi;
done
【问题讨论】:
-
数字之间的文字可以包含数字吗?
-
@nu11p01n73R 是的,文本中可以有数字和标点符号
-
匹配是否应该是 awk 命令?