簡體   English   中英

用於在 Linux 中合並文本文件中的 2 列的 awk 腳本

[英]Awk script to Merge 2 columns in a text file in Linux

我正在編寫一個 shell 腳本,下面是我想要實現的目標。

我有一個文件 - data.txt

data.txt 包含,-

TMN     -23.50
JHS     5000.00
NHG     233768.90

我想將 data.txt 合並到 datanew.txt 如下,-

020TMN+000023.5000
020JHS+005000.0000
020NHG+233768.9000

下面的 .awk 腳本適用於在 SunOS 5.8 服務器中執行此操作

 $ cat awkp.awk
 ( printf  "020%s%+06.4f         \n",$1,$2)

然后在我的主腳本中調用 awkp.awk 作為

cat data.txt | awk -f awkp.awk > datanew.dat

但同樣在 Linux 2.6.18 中不起作用

我曾嘗試在不同的 shell 環境以及 bash、korn 和 cshell 中運行我的 shell 腳本,但沒有運氣。

任何想法如何在 Linux 中獲得此輸出?

這適用於Linux:

$ awk '{printf  "020%s%+012.4f         \n",$1,$2}' data.txt
020TMN-000023.5000         
020JHS+005000.0000         
020NHG+233768.9000  

或者,如果您更喜歡單獨文件中的 awk 程序:

$ cat awkp3.awk
{printf  "020%s%+012.4f         \n",$1,$2}
$ awk -f awkp3.awk data.txt
020TMN-000023.5000         
020JHS+005000.0000         
020NHG+233768.9000   

需要進行兩項更改:

  1. awk 語句必須在花括號中,而不是括號中。

  2. 格式寬度必須從%+06.4f增加到%+012.4f

Sun OS 上的默認 awk 被認為是有問題的。 在 Sun 操作系統上,請考慮使用/usr/xpg4/bin/awk/usr/xpg6/bin/awk代替。

最后,請注意不需要cat 我們可以刪除它,從而減少必須創建的進程數量。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM