如何在awk中的字段之间保留原始空格?

亚诺斯

使用处理输入时awk,有时我想编辑其中一个字段,而无需触摸其他任何内容。考虑一下:

$ ls -l | awk 1
total 88
-rw-r--r-- 1 jack jack     8 Jun 19  2013 qunit-1.11.0.css
-rw-r--r-- 1 jack jack 56908 Jun 19  2013 qunit-1.11.0.js
-rw-r--r-- 1 jack jack  4306 Dec 29 09:16 test1.html
-rw-r--r-- 1 jack jack  5476 Dec  7 08:09 test1.js

如果我不修改任何字段($1$2,...),一切都因为它是保存。但是,如果我只想保留第一个字段的前三个字符:

$ ls -l | awk '{$1 = substr($1, 1, 3) } 1'
tot 88
-rw 1 jack jack 8 Jun 19 2013 qunit-1.11.0.css
-rw 1 jack jack 56908 Jun 19 2013 qunit-1.11.0.js
-rw 1 jack jack 4306 Dec 29 09:16 test1.html
-rw 1 jack jack 5476 Dec 7 08:09 test1.js

所有字段之间的原始空格将替换为简单的空格。

有没有办法保留字段之间的原始空白?

更新

在此示例中,编辑前4个字段相对容易。但是如果我只想保留第一个字母$5以获取此输出怎么办

-rw-r--r-- 1 jack jack     8 J 19  2013 qunit-1.11.0.css
-rw-r--r-- 1 jack jack 56908 J 19  2013 qunit-1.11.0.js
-rw-r--r-- 1 jack jack  4306 D 29 09:16 test1.html
-rw-r--r-- 1 jack jack  5476 D  7 08:09 test1.js
patrickh003

我知道这是一个老问题,但我认为必须有更好的选择。该答案适用于在搜索时偶然发现此问题的人。在网上浏览时,我不得不说@HåkonHægland是最好的答案,这是我最初使用的。

但是这是我的解决方案。使用FPAT它可以设置一个正则表达式来说明字段应该是什么。

 FPAT = "([[:space:]]*[[:alnum:][:punct:][:digit:]]+)";
在这种情况下,我要说的是该字段应以零个或多个空白字符开头,并以除空白字符以外的基本上任何其他字符结尾。 如果您在理解方括号表达式时遇到困难,请使用 以下 链接 POSIX

另外,将输出字段更改为OFS = "";分隔符,因为一旦对行进行了操作,如果您不更改默认值的OFS,输出将添加一个额外的空格作为分隔符。

我使用相同的示例进行测试。

$ cat example-output.txt
-rw-r--r-- 1 jack jack     8 Jun 19  2013 qunit-1.11.0.css
-rw-r--r-- 1 jack jack 56908 Jun 19  2013 qunit-1.11.0.js
-rw-r--r-- 1 jack jack  4306 Dec 29 09:16 test1.html
-rw-r--r-- 1 jack jack  5476 Dec  7 08:09 test1.js
$ awk 'BEGIN { FPAT = "([[:space:]]*[[:alnum:][:punct:][:digit:]]+)"; OFS = ""; } { $6 = substr( $6, 1, 2);  print $0; }' example-output.txt
-rw-r--r-- 1 jack jack     8 J 19  2013 qunit-1.11.0.css
-rw-r--r-- 1 jack jack 56908 J 19  2013 qunit-1.11.0.js
-rw-r--r-- 1 jack jack  4306 D 29 09:16 test1.html
-rw-r--r-- 1 jack jack  5476 D  7 08:09 test1.js

记住。字段现在有前导空格。因此,如果该字段需要替换为其他内容,则可以执行

len = length($1); 
$1 = sprintf("%"(len)"s", "-42-");
$ awk 'BEGIN { FPAT = "([[:space:]]*[[:alnum:][:punct:][:digit:]]+)"; OFS = ""; } { if(NR==1){ len = length($1); $1 = sprintf("%"(len)"s", "-42-"); } print $0; }' example-output.txt
      -42- 1 jack jack     8 Jun 19  2013 qunit-1.11.0.css
-rw-r--r-- 1 jack jack 56908 Jun 19  2013 qunit-1.11.0.js
-rw-r--r-- 1 jack jack  4306 Dec 29 09:16 test1.html
-rw-r--r-- 1 jack jack  5476 Dec  7 08:09 test1.js

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

如何使用awk创建新字段但保留原始字段?

来自分类Dev

在删除awk中的最后一个字段时,如何保留前导空格?

来自分类Dev

如何在某些字符之间保留单个空格或制表符,同时将其从其他字符中删除?

来自分类Dev

如何在Elasticsearch中的原始字段上聚合?原始字段似乎没有填充

来自分类Dev

如何在awk中搜索包含空格的模式?

来自分类Dev

回显php变量时如何在文本输入字段中保留空格

来自分类Dev

如何在VB.NET中锁定原始静态字段

来自分类Dev

如何在保留单词之间的空格的同时删除非字母字符?

来自分类Dev

如何在特定字段中尾随空格的地方过滤行?

来自分类Dev

如何在此 Javascript 的输入字段中限制空格?

来自分类Dev

如何在 orientDB 字段别名中给出空格

来自分类Dev

如何在textview中的文本之间留出空格?

来自分类Dev

如何在Java中的行之间留出空格?

来自分类Dev

如何在HTML中的段落内的单词之间删除空格

来自分类Dev

如何在tkinter中的行之间创建空格?

来自分类Dev

如何在Android中删除LinearLayout和relativeLayout之间的空格

来自分类Dev

如何在UITextView中的空格之间获取单词?

来自分类Dev

如何在Ruby中删除句子之间的多余空格?

来自分类Dev

如何在文件中的各个数字之间插入空格?

来自分类Dev

如何在Java中的行之间留出空格?

来自分类Dev

如何在Scala中删除括号之间的空格

来自分类Dev

如何在xml中的值之间添加空格?

来自分类Dev

如何在嵌套列表中的整数值之间放置空格?

来自分类Dev

如何在网格布局中以相同的宽度显示3个按钮,同时在按钮2和3之间保留一定数量的空格

来自分类Dev

如何在C ++中的类之间保留多个引用?

来自分类Dev

如何在awk中使用空格或制表符分隔字段

来自分类Dev

如何在awk中编写脚本,该脚本可以告诉每个记录中字段的平均长度,而无需计算空格?

来自分类Dev

在 Unix 中删除行字段之间的空格

来自分类Dev

空格后如何在Sublime Text 3中的括号之间自动插入空格

Related 相关文章

  1. 1

    如何使用awk创建新字段但保留原始字段?

  2. 2

    在删除awk中的最后一个字段时,如何保留前导空格?

  3. 3

    如何在某些字符之间保留单个空格或制表符,同时将其从其他字符中删除?

  4. 4

    如何在Elasticsearch中的原始字段上聚合?原始字段似乎没有填充

  5. 5

    如何在awk中搜索包含空格的模式?

  6. 6

    回显php变量时如何在文本输入字段中保留空格

  7. 7

    如何在VB.NET中锁定原始静态字段

  8. 8

    如何在保留单词之间的空格的同时删除非字母字符?

  9. 9

    如何在特定字段中尾随空格的地方过滤行?

  10. 10

    如何在此 Javascript 的输入字段中限制空格?

  11. 11

    如何在 orientDB 字段别名中给出空格

  12. 12

    如何在textview中的文本之间留出空格?

  13. 13

    如何在Java中的行之间留出空格?

  14. 14

    如何在HTML中的段落内的单词之间删除空格

  15. 15

    如何在tkinter中的行之间创建空格?

  16. 16

    如何在Android中删除LinearLayout和relativeLayout之间的空格

  17. 17

    如何在UITextView中的空格之间获取单词?

  18. 18

    如何在Ruby中删除句子之间的多余空格?

  19. 19

    如何在文件中的各个数字之间插入空格?

  20. 20

    如何在Java中的行之间留出空格?

  21. 21

    如何在Scala中删除括号之间的空格

  22. 22

    如何在xml中的值之间添加空格?

  23. 23

    如何在嵌套列表中的整数值之间放置空格?

  24. 24

    如何在网格布局中以相同的宽度显示3个按钮,同时在按钮2和3之间保留一定数量的空格

  25. 25

    如何在C ++中的类之间保留多个引用?

  26. 26

    如何在awk中使用空格或制表符分隔字段

  27. 27

    如何在awk中编写脚本,该脚本可以告诉每个记录中字段的平均长度,而无需计算空格?

  28. 28

    在 Unix 中删除行字段之间的空格

  29. 29

    空格后如何在Sublime Text 3中的括号之间自动插入空格

热门标签

归档