如何提取具有不同退出代码的行?

时间:2016-01-22 02:53:04

标签: bash

以逗号

分隔记录退出代码

最后两个字段是2个不同版本的脚本

的退出代码
import triggerEvent from 'trigger-event';
import component from './components/site-menu';

describe('triggering menu button', () => {
  let menuToggleSpy;
  beforeEach(() => {
    menuToggleSpy = jasmine.createSpy('event');
    component();
  });

  it('dispatches menu.toggle event', () => {
    document.addEventListener('menu.toggle', menuToggleSpy);

    const $trigger = document.querySelector('.js-trigger-main-menu');
    triggerEvent($trigger, 'click');

    expect(menuToggleSpy).toHaveBeenCalled();
  });
});

退出代码范围为0到20 如何使用不同的退出代码提取行?

我厌倦了这样做:

/opt/a/b/c,parameter,a b c,3,1
/opt/a/d/e,parameter,a b c,1,1
/opt/a/b/d,parameter,0,0
/opt/a/e/c,parameter,0,1

由于

1 个答案:

答案 0 :(得分:3)

使用awk

awk -F , '$NF != $(NF-1)' log

使用FS将字段分隔符(,)设置为-F ,NF是该行中的字段数。 $NF是该行上最后一个字段的值。 $(NF-1)是该行倒数第二个字段的值。

awk的默认操作是打印该行(即{print})。因此,当最后两个字段不同时,awk脚本只需返回truth-y值。所以我们比较它们。

使用sed

sed '/,\([0-9]\+\),\1$/d' log

d选择与模式,匹配的所有行,后跟一些数字([0-9]\+)并捕获该数字(\( / \)包装)然后是另一个,和我们已匹配的相同数字(第一个捕获组的\1)。这会让sed每隔一行打印一次(不匹配的那些)。