現有表(sam.txt):
36419 36418
36418 36417
36417 36416
36416 36415
期望的輸出:
36419 36418 1
36418 36417 2
36417 36416 3
36416 36415 3
我想附加 1,2,3,4 作為額外的列。我在 sed 命令下嘗試過,但我無法回圈行號$NUMBER,因為給出了語法錯誤?
linecount=$(wc -l < sam.txt)
for (( NUMBER=1; NUMBER<=linecount; NUMBER ))
do
sed -i "$NUMBERs/.*/& $b/" sam.txt
done
更新:洗掉了單元格之間的豎線,因為它會引起混亂。我保留了垂直條以呈現為 HTML 表格,但它沒有按預期加載。
uj5u.com熱心網友回復:
這回答了原始問題。
與其運行sed多次,不如生成一個 sed 腳本并只運行一次。
#! /bin/bash
lines=$(wc -l < "$1")
{
echo '1s/$/C/'
echo '2s/$/----/'
for ((n=3; n<=lines; n)) ; do
echo $n's/$/'$((n-2))/
done
echo 's/$/|/'
} | sed -f- "$1"
uj5u.com熱心網友回復:
在 awk 中,$0 給出了整行,您可以根據需要添加文本。我們宣告了一個變數 a,在使用它之前我們會增加它,這意味著它是第一行的一個。然后我們列印整行 一個空格變數a
- 我們跑:
~/tests $ cat sam.txt | awk '{ a; print $0 " " a }'
哪個輸出
36419 36418 1
36418 36417 2
36417 36416 3
36416 36415 4
uj5u.com熱心網友回復:
$ awk '{print $0, NR}' sam.txt
36419 36418 1
36418 36417 2
36417 36416 3
36416 36415 4
如果要修改原始檔案,請使用 GNU awk:
awk -i inplace '{print $0, NR}' sam.txt
或使用任何 awk:
awk '{print $0, NR}' sam.txt > tmp && mv tmp sam.txt
最后一個腳本是 gawk、sed、perl、ruby 等在幕后所做的,它們都沒有真正進行“就地”編輯,它們都在內部使用臨時檔案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/428508.html
上一篇:獲取多維陣列的鍵(PHP語言)
