Awk print$0将我的文件的所有行打印到列的最后一个位置;我怎样才能开始打印?

Awk print$0将我的文件的所有行打印到列的最后一个位置;我怎样才能开始打印?,awk,Awk,我使用这个命令 awk -F";" '{ print $0 "VVVVVVVV" $10 }' FILE3.csv 这张照片印得很好,但这张照片的顺序是这样的 VVVV;第10栏第1列;第2栏;第3栏:第4栏;第5栏……第10栏 我需要反向打印 column1;第2栏;第3栏:第4栏;第5栏……第10栏;VVVV;第10栏 但是不工作我怎么能做到这一点呢?你也可以这样做 $ awk -F";" '{ sub("\r",""); print $0 "VVVVVVVV" $10 }' file

我使用这个命令

  awk -F";" '{ print $0 "VVVVVVVV" $10 }' FILE3.csv
这张照片印得很好,但这张照片的顺序是这样的

VVVV;第10栏<强>第1列;第2栏;第3栏:第4栏;第5栏……第10栏

我需要反向打印 column1;第2栏;第3栏:第4栏;第5栏……第10栏;VVVV;第10栏


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

你也可以这样做

$ 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

$ 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

要么你做

$ 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

$ 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

原始文件是否来自Windows?这将是我能想到的唯一一件事,为什么顺序可能会改变。如果是这样,您需要在其上运行dos2unix,或者将RS更改为windows行的结尾。是的,来自windows OK将执行此操作;非常感谢是的,现在非常有效thankyou@VictorHernandez:您可以尝试使用cat-v Input_文件来检查是否有控制M字符,如果有,您可以通过tr-d'\r'