我有一个包含可变列的文件,如下所示:
text11|text12|text13 text121|text122|text123 text131|text132|text133
text21|text22|text23 text221|text222|text223 text231|text232|text233 text241|text242|text243
我想要的是:
- 每列应另起一行
- 管道应替换为空格
- 原始文件的每条记录后面应该有一个空行
像这样:
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/