Files
使用linux將內容從一個文件粘貼到另一個文件
考慮我是否有以下內容:
cat /home/r1/f1.txt sch1.t1 sch2.t2 sch2.t3 sch1.t4
我也有文件
cat /home/r2/sch1.t1.txt data cat /home/r2/sch2.t2.txt data1
我需要將 f1.txt 中的 sch1.t1 與另一個目錄 (sch1.t1,.txt) 中存在的文件進行匹配,並將以下內容粘貼到 f1.txt 本身中
o/p:
f1.txt sch1.t1 data sch2.t2 data1
我將只有 f1.txt,並且可能有很多 sch(1..n).t(1..n)。每個 sch(1..n).t(1..n) 都是單獨的文件,只有一行數據。
如果它是一個重複的問題,請指導我完成它。
試過程式碼。
while read line do paste f1.txt <(cut -f2 /home/r2/$line.txt) >> out_file.txt mv out_file.txt /home/r1/f1.txt done < /home/r1/f1.txt
謝謝回复。更新的問題。考慮文件是否為空(Sch1.t4.txt)。在哪裡包含這段程式碼)
for file in /*.txt; do if [ ! -s $file ]; then echo "NA"> $file; fi; done
o/p:
f1.txt sch1.t1 data sch2.t2 data1 sch1.t4 NA
我處理它的方法是使用一個簡單的循環來讀取每個條目
f1.txt
並使用它來建構結果文件。完成後,您可以根據需要覆蓋原始f1.txt
文件#!/bin/sh ctrl=/home/r1 base=/home/r2 # Loop across each entry while IFS= read -r name do # Derive filename file="$base/$name.txt" # Fix up if it doesn't already exist (or is zero length) [ ! -s "$file" ] && printf '%s\n' 'NA' >"$file" # Record what we've got printf '%s %s\n' "$name" "$(xargs <"$file")" done <"$ctrl/f1.txt" >"$ctrl/f1.out" # Replace the original file, saving it [ ! -f "$ctrl/f1.old" ] && mv -f "$ctrl/f1.txt" "$ctrl/f1.old" mv -f "$ctrl/f1.out" "$ctrl/f1.txt"