【问题标题】:nawk add column to each linenawk 将列添加到每一行
【发布时间】:2012-10-10 08:01:55
【问题描述】:

我正在尝试将带有文件名的列添加到每一行的末尾。 每行都有一个

Name Surname   some_number

Namesurname 用空格隔开,numberSurname 用制表符隔开。

我正在使用此脚本执行此操作,但它不起作用,它只会将文件名添加到行首。

$1=temp
nawk -v F'\t' -v OFS='\t' '{$2=$2" "$temp} 1' $temp

PS 操作系统是 SunOS。

【问题讨论】:

    标签: bash awk solaris nawk


    【解决方案1】:

    尝试:

    awk '{ printf( "%s %s\n", $0, FILENAME ); }' infile
    

    【讨论】:

    • 它只为我打印文件名
    • @erizo:此命令是从命令行运行的,而不是在 shell 脚本中。在这种情况下,$0 具有不同的含义。这意味着整条线。
    • 它不适用于我的文件。我有像 filename.dat 这样的文件。当我像 awk '{ printf("%s %s\n", $0, FILENAME); 这样在 cmd 中运行它时}' filename.dat 我在每一行中只得到文件名。
    • 确保您的输入文件不以^M 结尾(又名\r 又名DOS 样式的换行符),因为这将导致Solaris 重置回行首并覆盖任何内容已经打印出来了。 (通常你不会看到这个,因为它后面会紧跟着移动到下一行的换行符,但是当你有 awk 在 \r\n 之间插入文件名时,你会看到这个问题。)
    【解决方案2】:

    awk '{print $0, FILENAME}' 文件

    【讨论】:

      猜你喜欢
      • 2014-08-31
      • 1970-01-01
      • 2014-09-24
      • 2014-12-13
      • 1970-01-01
      • 2012-06-15
      • 1970-01-01
      • 2011-11-11
      • 1970-01-01
      相关资源
      最近更新 更多