打印与模式匹配且在分隔符内的所有行

时间:2013-12-05 19:15:36

标签: perl sed awk

我有一个包含以下行的文件。

#user

codecodecodecodecodecodecodecode
codecodecodecodecodecodecodecode
codecodecodecodecodecodecodecode
codecodecodecodecodecodecodecode;

#user1

code1code1code1code1code1code1
code1code1code1code1code1code1
code1code1code1code1code1code1
code1code1code1code1code1code1;

#user2

code2code2code2code2code2code2
code2code2code2code2code2code2
code2code2code2code2code2code2
code2code2code2code2code2code2;

#user (again "user" but with a different code)

code3code3code3code3code3code3
code3code3code3code3code3code3
code3code3code3code3code3code3
code3code3code3code3code3code3;

我想从“user”中仅提取代码,我正在寻找的输出是:

#user

codecodecodecodecodecodecodecode
codecodecodecodecodecodecodecode
codecodecodecodecodecodecodecode
codecodecodecodecodecodecodecode;

#user

code3code3code3code3code3code3
code3code3code3code3code3code3
code3code3code3code3code3code3
code3code3code3code3code3code3;

结果仅重新调整了与“user”及其相应代码匹配的行。

我尝试了awk -F";" '{print $1}' $file,但我无法隔离特定用户的代码。

2 个答案:

答案 0 :(得分:2)

在perl one liner中:

perl -ne 'print if /^#/' in.txt

答案 1 :(得分:0)

您可以按如下方式使用awk:

awk -F\; '/code/' test.txt

假设字段分隔符为;且格式为code

如果要打印特定的行或列,请分别使用awk的NR和NF变量。

了解更多信息:http://www.gnu.org/software/gawk/manual/gawk.html