【问题标题】:Awk print $0 print all lines of my files to the last position of column ;how I can print at first?awk print $0 将我的文件的所有行打印到列的最后一个位置;我如何首先打印?
【发布时间】:2017-07-08 05:49:51
【问题描述】:

我用这个命令

  awk -F";" '{ print $0 "VVVVVVVV" $10 }' FILE3.csv

这个打印很好,但是这个打印顺序是这样的

VVVVVVVV;column10;column1;column2;column3:column4;column5.....column10

我需要反向打印 column1;column2;column3:column4;column5.....column10;VVVVVVVV;column10

但不工作我怎么能做到这一点?

【问题讨论】:

  • 原始文件是否来自 Windows?这将是我能想到的唯一一件事,为什么订单可能会改变。如果是这样,您要么需要在其上运行 dos2unix,要么将 RS 更改为 windows 行结尾。
  • 是的来自 windows
  • ok 会这样做;非常感谢
  • 是的,现在非常感谢您
  • @VictorHernandez:您可以尝试 cat -v Input_file 检查是否有控制 M 字符,如果有,您可以通过 tr -d '\r'

标签: awk


【解决方案1】:

随便你

$ awk -F";" '{ sub("\r",""); print $0 "VVVVVVVV" $10 }' file

$ awk -F";" '{ print $0 "VVVVVVVV" $10 }' RS="\r\n" file

$ dos2unix file
$ awk -F";" '{ print $0 "VVVVVVVV" $10 }' file

这里是示例

akshay@db-3325:/tmp$ cat file
column1;column2;column3;column4;column5;column6;column7;column8;column9;column10
column1;column2;column3;column4;column5;column6;column7;column8;column9;column10

# See at the end there is ^M char
akshay@db-3325:/tmp$ cat -A file
column1;column2;column3;column4;column5;column6;column7;column8;column9;column10^M$
column1;column2;column3;column4;column5;column6;column7;column8;column9;column10^M$

# Using awk without sub() - This is what you got
akshay@db-3325:/tmp$ awk -F";" '{ print $0 "VVVVVVVV" $10 }' file
VVVVVVVVcolumn10column3;column4;column5;column6;column7;column8;column9;column10
VVVVVVVVcolumn10column3;column4;column5;column6;column7;column8;column9;column10

# Using awk with sub() - This is what you wanted to get
akshay@db-3325:/tmp$ awk -F";" '{ sub("\r",""); print $0 "VVVVVVVV" $10 }' file
column1;column2;column3;column4;column5;column6;column7;column8;column9;column10VVVVVVVVcolumn10
column1;column2;column3;column4;column5;column6;column7;column8;column9;column10VVVVVVVVcolumn10

akshay@db-3325:/tmp$ awk -F";" '{ print $0 "VVVVVVVV" $10 }' RS="\r\n" file
column1;column2;column3;column4;column5;column6;column7;column8;column9;column10VVVVVVVVcolumn10
column1;column2;column3;column4;column5;column6;column7;column8;column9;column10VVVVVVVVcolumn10

# dos2unix
akshay@db-3325:/tmp$ dos2unix file
dos2unix: converting file file to Unix format ...

# Now you can see ^M is not there
akshay@db-3325:/tmp$ cat -A file
column1;column2;column3;column4;column5;column6;column7;column8;column9;column10$
column1;column2;column3;column4;column5;column6;column7;column8;column9;column10$

# Now your awk 
akshay@db-3325:/tmp$ awk -F";" '{ print $0 "VVVVVVVV" $10 }' file
column1;column2;column3;column4;column5;column6;column7;column8;column9;column10VVVVVVVVcolumn10
column1;column2;column3;column4;column5;column6;column7;column8;column9;column10VVVVVVVVcolumn10

【讨论】:

    猜你喜欢
    • 2022-06-15
    • 1970-01-01
    • 2014-03-24
    • 2011-02-27
    • 2018-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多