awk - 每条记录后的空行和换行符中的列

标签 awk

我有一个包含可变列的文件,如下所示:

text11|text12|text13 text121|text122|text123 text131|text132|text133
text21|text22|text23 text221|text222|text223 text231|text232|text233 text241|text242|text243

我想要的是:

  1. 每列应另起一行
  2. 管道应替换为空格
  3. 原始文件的每条记录后面应该有一个空行

像这样:

text11  text12  text13 
text121 text122 text123 
text131 text132 text133

text21  text22   text23 
text221 text222 text223
text231 text232 text233
text241 text242 text243

有没有办法只用 awk 来做到这一点?

我尝试过这样的事情:

cat file.txt | awk 'gsub(" ","\n"); gsub("\n", "\n\n",$NR)'

但这当然行不通。

最佳答案

您可以尝试以下操作吗?

awk '{gsub(/\r/,"");gsub(FS,ORS);gsub(/\|/,OFS)} 1'  Input_file

或者

awk '{gsub(/\r/,"");gsub(/ /,ORS);gsub(/\|/,OFS)} 1'  Input_file

或者

awk '{gsub(/\r/,"");gsub(/ /,"\n");gsub(/\|/,OFS)} 1'  Input_file

说明:为上述代码添加详细说明。这仅用于解释目的。

awk '              ##Starting awk program from here.
{                  ##Starting main BLOCK of program from here.
  gsub(FS,ORS)     ##Globally substituting spaces with new lines here.
  gsub(/\|/,OFS)   ##Globally substituting pipe with space for all occurrences of current line.
}                  ##Closing main BLOCK of this line here.
1                  ##Mentioning 1 will print edited/non-edited lines here.
'  Input_file      ##Mentioning Input_file name here.

关于awk - 每条记录后的空行和换行符中的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59946320/

相关文章:

awk + ​​如何获取文件中的最新数字但排除数字直到 4 位

python - python脚本中的awk命令

python - 如果行满足一定范围,如何打印行

过滤命令输出时出现正则表达式错误

linux - 如何为一些行运行 awk。?

linux - 获取日志文件中的信息

shell - 将变量从 shell 脚本导出到 awk

bash - 在 shell 脚本中嵌入 awk

regex - 使用 sed/awk 匹配 n 个空格后的单词

unix - 按 2 列连接 2 个文件,使用 awk 保留所有记录