使用AWK跳过第一行,其余部分进行模式匹配



在下面的文本中,我想跳过第一行,将$放在以Part1开头的行之前。我已经包括了我的剧本,但它不起作用。你能帮忙吗?

Input
------
Intro
Part1 Yellow
Part2 Red
Part3 Green
Part1 Yellow
Desired output:
--------------
$Part1 Yellow
Part2 Red
Part3 Green
$Part1 Yellow
Code:
awk 'NR>1 {$0~/Part1/($0="$ "$0)}1' myfile
Error:
awk: Syntax error  Context is:
>>>     NR>1 {$0~/Part1/(       <<<

使用您显示的样本,请尝试以下awk。简单的解释是,它跳过第1行(FNR>1(条件,并检查一行是否以Part1开头,然后在当前行的值前面添加$。然后提及1将打印编辑/未编辑的行。

awk 'FNR>1 && /^Part1/{$0="$"$0} 1' Input_file

如果您想跳过第一行而不打印它,我会在您的代码中进行以下更改:

awk 'NR>1 {if ($0 ~ /^Part1/) $0="$"$0;print}' file

或者更简洁:

awk 'NR > 1 {if (/^Part1/) $0="$"$0;print}' file
$Part1 Yellow
Part2 Red
Part3 Green
$Part1 Yellow

相关内容

  • 没有找到相关文章

最新更新