Unix基于列中的顺序剪切

时间:2016-01-25 16:42:21

标签: linux bash unix

我有一个返回类似以下内容的bash脚本:

/title
my_title
/year
2017

如何使用简单的剪切命令(或者可以编写脚本的东西)拉出年份(2017)?

我知道如果标题不存在,cut -d\ -f2会起作用...那么如何跳过标题并仅抓住一年?

4 个答案:

答案 0 :(得分:4)

$ sed -n '/\/year/{n;p;q}' infile
2017

这样做:

/\/year/ { # If the line matches "year"
    n      # Get next line
    p      # Print line
    q      # Quit: don't have to read the rest of the file
}

-n确保没有其他内容被打印出来。

答案 1 :(得分:2)

如果4个数字年份显示在单独的行中,则可以使用awk:

awk 'p=="/year"{print; exit} {p=$0}' file
2017

答案 2 :(得分:2)

另一个awk

$ awk 'f{print;exit} /^\/year/{f=1}' file
2017

答案 3 :(得分:0)

如果输入完全如图所示,则切割根本不起作用,因为它一次只能在一行上工作。

您可以使用tail获取最后一行:

tail -n 1

或第四行:

tail -n+4

grep + tail获取以下/year行:

grep -A1 'year' | tail -n1

grep -A1将在匹配的标志后面打印一行,然后用尾部提取。