मैं एक फ़ाइल के लिए पंक्ति संख्या जोड़ना चाहता हूं, तो मुझे यह पसंद है,

awk '{print $0 "\x03" NR > "/opt/data2/gds_test/test_partly.txt"}' /opt/data2/gds_test/test_partly.txt

मैंने कमांड की इस लाइन को शेल स्क्रिप्ट फ़ाइल में रखा, और इसे कुछ समय के लिए चलाया, यह अभी भी समाप्त नहीं हुआ है, इसलिए मैं इसे बल द्वारा समाप्त करता हूं, लेकिन मुझे लगता है कि स्रोत फ़ाइल का आकार 1.7G से 242G में बदल गया है,

क्या हुआ? मैं कुछ उलझन में हूं,

मैंने कभी कमांड लाइन में परीक्षण करने के लिए एक छोटी फ़ाइल का उपयोग किया था, यह awk कमांड ठीक लगता है,

awk
-1
tonyibm 23 पद 2020, 04:14

2 जवाब

सबसे बढ़िया उत्तर

आप किसी फ़ाइल के सामने से उसी समय पढ़ रहे हैं जैसे आप उसके अंत में लिख रहे हैं। इसके बजाय इसे आजमाएं:

tmp=$(mktemp)
awk '{print $0 "\x03" NR}' '/opt/data2/gds_test/test_partly.txt' > "$tmp" &&
mv "$tmp" '/opt/data2/gds_test/test_partly.txt'
3
Ed Morton 23 पद 2020, 06:30

हां, मैं परिणाम को एक tmp फ़ाइल में पुनर्निर्देशित करने के लिए बदलता हूं, और फिर मूल फ़ाइल को हटाता हूं और tmp फ़ाइल का नाम बदलता हूं, यह ठीक है,

और मुझे यह भी पता चलता है कि गॉक-आई इनप्लेस का उपयोग किया जा सकता है,

0
tonyibm 23 पद 2020, 09:31