我有 2 個檔案看起來像這樣
檔案1.txt
GYFUFGYO1 KMP-app [email protected] CODE_SMELL
GYFUFGYO2 KMP-app [email protected] CODE_SMELL
GYFUFGYG3 AFP-Login [email protected] BUG
GYFUFGYG4 AFP-Login [email protected] BUG
GYFUFGYO5 KMP-app [email protected] CODE_SMELL
GYFUFGYO6 KMP-app [email protected] CODE_SMELL
檔案2.txt
MAC 135 2022-09-02-09:35
我必須將這些內容(file1,file2)附加到 file3.txt 然后預期的輸出是
GYFUFGYO1 KMP-app [email protected] CODE_SMELL MAC 135 2022-09-02-09:35
GYFUFGYO2 KMP-app [email protected] CODE_SMELL MAC 135 2022-09-02-09:35
GYFUFGYG3 AFP-Login [email protected] BUG MAC 135 2022-09-02-09:35
GYFUFGYG4 AFP-Login [email protected] BUG MAC 135 2022-09-02-09:35
GYFUFGYO5 KMP-app [email protected] CODE_SMELL MAC 135 2022-09-02-09:35
GYFUFGYO6 KMP-app [email protected] CODE_SMELL MAC 135 2022-09-02-09:35
這就是我嘗試過的
paste -s file1.txt file2.txt > file3.txt
然后輸出是(file3.txt)
GYFUFGYO1 KMP-app [email protected] CODE_SMELL GYFUFGYO2 KMP-app [email protected] CODE_SMELL GYFUFGYG3 AFP-Login [email protected] BUG GYFUFGYG4 AFP-Login [email protected] BUG GYFUFGYO5 KMP-app [email protected] CODE_SMELL GYFUFGYO6 KMP-app [email protected] CODE_SMELL
BAU 133 2022-09-02-09:35
有人可以幫我解決這個問題嗎?提前致謝!
uj5u.com熱心網友回復:
假設file2.txt只有一行如圖所示,那么paste解決方案如何:
paste file1.txt <(yes $(<file2.txt) | head -n $(wc -l <file1.txt))
yes $(<file2.txt)重復 file2.txt 的行。$(wc -l <file1.txt)回傳 file1.txt 的行數。head -n $(wc -l <file1.txt)列印與 file1.txt 一樣多的行。
uj5u.com熱心網友回復:
假設file2.txt總是正好有 1 行,那么您可能會利用 GNUsed的保存空間,請考慮以下簡單示例讓file1.txt內容為
123
456
789
和file2.txt檔案內容是
ABC
然后
sed -e '1{h;d}' -e 'G;s/\n/ /' file2.txt file1.txt
給出輸出
123 ABC
456 ABC
789 ABC
說明:我為 1 行注冊了兩個動作(全域,即提到檔案的第一行,觀察它file2.txt file1.txt不是反向的)我指示 GNUsed將行保存到保持空間(h)并立即繼續前進而不輸出任何東西(d),對于其他行,我指示 GNUsed附加換行符和保持空間 ( G) 的內容,然后用空格字符替換所述換行符。
(在 GNU sed 4.5 中測驗)
uj5u.com熱心網友回復:
awk 'NR==FNR{v=$0; next} {print $0, v}' file2.txt file1.txt
如果空白不夠,設定或管道輸出以獲得您喜歡的任何分隔符/OFS對齊方式\t。column -t
uj5u.com熱心網友回復:
paste期望兩個長度相等的檔案。我猜你基本上想要這個常見的 Awk 兩線:
awk 'BEGIN { FS=OFS="\t" } NR==FNR { a[ i] = $0; next }
{ print $0, a[(FNR-1) % i 1] }' file2.txt file1.txt
(我假設您的檔案是制表符分隔的;從您的問題中不清楚。)
uj5u.com熱心網友回復:
假設file2 只有1 行
cat temptest_f_00_01.txt
123
456
789
cat temptest_f_00_02.txt
ABC
mawk -F'^$' 'FNR<NR || _*(ORS=" "$_ RS)' f2.txt f1.txt
123 ABC
456 ABC
789 ABC
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/503768.html
上一篇:我可以確保glob選擇的檔案按特定順序排列嗎?0_...、1_...等是否提供保證?
下一篇:使用檔案上的字串執行rm并洗掉行
