awk - 保持原始格式 POST 通过 AWK

标签 awk whitespace field

我在使用 AWK 简单地从流中删除字段时遇到问题,如下所示:

  1 int blah (void)
  2 {
  3         if (foo) {
  4                 printf ("blah\n");
  5         }       
  6         return 0;
  7 }  

我使用以下代码删除第一个字段:

$ awk '{ $1=""; 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 个问题的解决方案。据我所知,如果您分配给一个字段,则输出字段分隔符用于将所有字段连接在一起。所以 ""+ 突然折叠成一个空格。尽管我对它持保留态度,但我不是 awk 专家。例如,尝试将 : 分配给变量 OFS,冒号而不是空格将导致输出中的字段之间:

echo a b c | awk 'BEGIN{ OFS = ":" } { $1=""; print }'
$ :b:c

如果您使用 gawk,那么您可以使用它的 gensub 扩展,我发现它非常简单易用:

print gensub($1 "[\t ]*(.*)", "\\1", 1); 

关于awk - 保持原始格式 POST 通过 AWK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/408469/

相关文章:

java - 如何在读取文件以生成 XML DOM 时忽略空格

c# - 为什么这个语法是错误的?不能对一行中的多个属性使用 GET 和 SET

jquery datepicker 多个实例

mysql - 如何计算数据库中的水平值?

linux - 如何从字符串中最后一个定界符的左边获取所有内容?

bash - 基于公共(public)字段(IP 地址)连接两个文本文件

bash - awk 提取列但仅从一行中提取

python - 在 awk 中解析数据

javax.xml.transform.Transformer 正在删除所需的空白(xml 到文本转换)

javascript - 刷新时导航栏下方出现奇怪的空白