
原文:
yes
no
approved
declined
第二段文字
1111 1
333 4
1
是4
我想在原始文字中替換的行號
輸出:
1111
no
approved
333
如何處理這個問題
答案1
短的awk方法:
awk 'NR==FNR{ a[$2]=$1; next }FNR in a{ $0=a[FNR] }1' file2 file1
a[$2]=$1
-$1
使用第二個欄位值$2
作為陣列a
索引擷取第一個欄位值(當處理第一個輸入檔時file2
)$0=a[FNR]
- 用目前記錄號碼的值取代整行FNR
(處理 時file1
)
輸出:
1111
no
approved
333
答案2
如果您喜歡程式產生程序,可以使用 awk 建立 sed 腳本:
awk '{printf "%dc\\\n%s\n", $2, $1}' < second | sed -f - original
如果您的 sed 接受腳本的 stdin,或:
awk '{printf "%dc\\\n%s\n", $2, $1}' < second > tempfile &&
sed -f tempfile original &&
rm tempfile
如果您的 sed 不接受腳本的標準輸入。
中間 sed 腳本與您的範例輸入類似:
1c\
1111
4c\
333