[英]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
需要進行兩項更改:
awk 語句必須在花括號中,而不是括號中。
格式寬度必須從%+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.