awk 不打印整行

标签 awk sh

我正在使用 awk 执行以下脚本,该脚本以不同的顺序打印文件的列。

#!/bin/sh

cat test.txt | awk  '{ if ($3 != "") {print $3 "  " $1 "  " $2} else if (($3 == "") && ($2 != "")) {print $2 "  " $1 } }' > test_proc.txt

我对输出的期望: print $3 ""$1 ""$2

$3  $1  $2
$3  $1  $2

实际打印内容: print $3 ""$1 ""$2

$3
  $1  $2
$3
  $1 $2

类似地,我对输出的期望: print $2 ""$1

$2  $1
$2  $1

实际打印内容: print $2 ""$1

$2
  $1
$2
  $1

以下是 test.txt 中的一些行:

rd-abc 0000002000000000
0x47FF93A0 rd-abc  DFFDC08C02020000

为什么我会在中间收到意外的回车符?

最佳答案

使用以下命令从您的 Input_file 中删除回车符:

tr -d '\r' < Input_file

或者

awk '{gsub(/\r/,"")} 1' Input_file

关于awk 不打印整行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48578856/

相关文章:

bash - 从 shell 中删除文本文件的第一个字符

linux - 在 shell 中使用 "for"迭代文件中的行从不匹配目标

php - 有什么办法可以将屏幕内容打印到网页上吗?

linux - 根据特定列拆分列

bash - 将输入字段作为数组循环

linux - 我如何在 Perl 中使用 paste 和 awk?

python - Vim:警告:不输出到终端

linux - gawk 和 shell 脚本的单引号问题

linux - 检索 CPU 使用率

shell - ./*/是可移植的吗?