Добавьте пробел после -i
awk old file | grep -i "key" | cut -f 2 >new.txt
P.S. И почему вы не добавляете действие grep
и cut
в логику awk
?
На основании комментариев может понадобиться что-то вроде:
awk '/key/ {print $2}' old_file.txt >new.txt
(при условии, что разделитель пробел)
Вот один пример:
# cat a2
key 1
orange 2
cool 3
key 4
# grep key a2 >a2.out
или с awk
awk '/key/ {print}' a2 >a2.out
# cat a2.out
1
4
Это - то, как моя компания автоматизировала FxCop с помощью MSBuild:
<!-- The directory where FxCop is installed. -->
<FxCopDirectory>C:\Program Files\Microsoft FxCop 1.36</FxCopDirectory>
<!-- The FxCop console executable.. -->
<FxCopCmd>$(FxCopDirectory)\FxCopCmd</FxCopCmd>
<Target Name="CodeAnalysis>
<!-- Once to get XML for metrics. -->
<Exec Command=""$(FxCopCmd)" /p:"$(BuildDirectory)\FxCop\RuleSet.FxCop" /out:$(BuildResults)\FxCop.xml /summary /verbose /f:$(Binaries)\@(CodeAnalysis, ' /f:$(Binaries)\')" />
<!-- Once to report with the build results. -->
<Exec Command=""$(FxCopCmd)" /p:"$(BuildDirectory)\FxCop\RuleSet.FxCop" /out:$(BuildResults)\FxCop.html /summary /verbose /applyoutXsl:$(MSBuildTasks)\CodeAnalysisReport.xsl /f:$(Binaries)\@(CodeAnalysis, ' /f:$(Binaries)\')" />
<!-- Update the FxCop report so that it is fully expanded by default. -->
<FileUpdate Regex="<body\s"
ReplacementText="<body onLoad="ExpandAll();" "
Files="$(BuildResults)\FxCop.html" />
</Target>
Затем можно написать некоторый код C# для потребления выходного файла:
/// <summary>
/// Gather metrics for code analysis.
/// </summary>
private static void GatherCodeAnalysisMetrics()
{
string file = @"$(BuildResults)\FxCop.xml";
if (!File.Exists(file)) return;
System.Xml.XmlDocument document = new System.Xml.XmlDocument();
document.Load(file);
System.Xml.XmlNodeList list = document.SelectNodes("//Message");
codeAnalysisWarnings = list.Count;
Console.WriteLine("Code analysis warnings: " + codeAnalysisWarnings);
}
jgwood - я полагаю, что он относится для Кодирования Метрик (цикломатическая сложность, и т.д.) и не FxCop. Я искал решение для этого также, поскольку правило FxCop для сложности имеет hardcoded threshholds. Это кажется, что еще нет никакой командной строки или API для метрик в VS2008 (на это сообщение на Блоге Команды Анализа кода) - надо надеяться, они выпустят powertool.
Вы посмотрели на NDepend для этого?