在shell中提取文件的每一行的某一部分

vsikbqxv  于 2023-08-07  发布在  Shell
关注(0)|答案(1)|浏览(118)

我正在尝试从一个文件中提取图ID,该文件如下所示

id DiaMatch(13) = Sector(A1x12, 5, 47) * Shift(k2, -k2+k1, [], k1, -p2+k1, []);
id DiaMatch(14) = Sector(A2x12, 5, 47) * Shift(k2, k1-k2, [], k1, -p2+k1, []);
id DiaMatch(15) = Sector(A1, 5, 47) * Shift(k2, -k2+k1, [], k1, -p1+k1, []);
id DiaMatch(16) = Sector(A2, 5, 47) * Shift(k2, k1-k2, [], k1, k1-p1, []);
id DiaMatch(01) = Sector(A3x12, 6, 111) * Shift(k2, p2-k1, [], k1, k1-k2+p1, []);
id DiaMatch(02) = Sector(A3, 6, 111) * Shift(k2, -k1+k2, [], k1, k1, []);
id DiaMatch(07) = Sector(A1, 6, 111) * Shift(k2, -k2, [], k1, p1-k1, []);
id DiaMatch(08) = Sector(A2, 6, 111) * Shift(k2, -k2, [], k1, -k1+p1, []);
id DiaMatch(09) = Sector(A3x12, 6, 123) * Shift(k2, k1, [], k1, k2, []);
id DiaMatch(10) = Sector(A2x12, 6, 63) * Shift(k2, p2-k2, [], k1, p2-k1+p1, []);
id DiaMatch(11) = Sector(A3, 6, 123) * Shift(k2, k1, [], k1, k2, []);
id DiaMatch(12) = Sector(A2, 6, 63) * Shift(k2, p1-k2, [], k1, p2-k1+p1, []);

字符串
我只想提取数字13,14,15等并保存在一个新文件中,其他东西被排除在外。
我在shell中是非常新的,如果不打开和阅读文件,我无法尝试任何东西

while read line;
do
        echo $line
done <jobs.yaml

gj3fmq9x

gj3fmq9x1#

pattern='^id DiaMatch[(]([[:digit:]]+)[)]'
while IFS= read -r line; do
  [[ $line =~ $pattern ]] || continue
  echo "${BASH_REMATCH[1]}"
done <infile >outfile

字符串
请在https://ideone.com/ISoFjY的在线沙箱中查看此运行

相关问题