質問
以下に示すように、AWKを使用して単純にストリームからフィールドを削除する際に問題があります:
1 int blah (void)
2 {
3 if (foo) {
4 printf ("blah\n");
5 }
6 return 0;
7 }
次のコードを使用して最初のフィールドを削除します:
$ awk '{$ 1 ="&quot ;; print} 'example.out
int blah (void)
{
if (foo) {
printf ("blah\n");
}
return 0;
}
これはなぜですか?これは、AWKがすべての空白を削除するためですか?これを防ぐことができますか?
よろしくお願いします
解決
http://awk.freeshell.org/RangeOfFields
実行方法の説明が含まれています。また、 http://student.northpark.edu/pemente/awk/awktailにもリンクしています。 txt には、問題に対する3つの解決策が含まれています。私が知る限り、フィールドに割り当てた場合、出力フィールド区切り文字を使用してすべてのフィールドを連結します。 " " +
は突然1つのスペースに縮小されます。しかし、私はawkの専門家ではありません。たとえば、:
を変数 OFS
に割り当てると、スペースではなくコロンが出力のフィールド間になります:
echo a b c | awk 'BEGIN{ OFS = ":" } { $1=""; print }'
$ :b:c
g awkを使用している場合、 gensub
拡張機能を使用できます。
print gensub($1 "[\t ]*(.*)", "\\1", 1);
所属していません StackOverflow