[AWK] NR==FNR 的意思
簡介 很多時候,我們都會看到 awk 指令中含有 NR==FNR 這個短句,其實這昰一個 awk 中的常用語法。 NR 和 FNR 是兩個 awk 中的內置變量,NR 即是 total Number of input Records seen so far(到目前為止看到的總輸入記錄數),而 FNR 則是 Number of input Record in …
Journey of a noob
簡介 很多時候,我們都會看到 awk 指令中含有 NR==FNR 這個短句,其實這昰一個 awk 中的常用語法。 NR 和 FNR 是兩個 awk 中的內置變量,NR 即是 total Number of input Records seen so far(到目前為止看到的總輸入記錄數),而 FNR 則是 Number of input Record in …
comm 是一個用作逐行比較兩個已排序檔案的指令,我們可以在多種情況下使用它,在討論實用例子前,讓我們先了解一下它是如何運作的。 ‘comm’ 指令是如何運作的 在沒有提供選項執行時 讓我們用例子看看 comm 指令是如何運作的,在以下例子中,我們需要創建兩個檔案: file1.txt Apple Banana Cat file2.txt Banana Whatever 我們可以把這兩個檔案作為指令的引數 (argument),並且不提供選項地執行這指令,看看 comm 會給我們怎樣的輸出。 noob@learnfromnoobs:~$ comm file1.txt file2.txt Apple Banana Cat Whatever 這結果看上來有點奇怪…… 到底這個輸出在表達甚麼呢?其實,如果在執行 comm …
有時,我們需要在一個文件中刪除在另一個文件中存在的行,這通常發生在當我們需要從配置文件中刪除一些配置的時候,如果只有幾行需要刪除,這當然很容易,但是當我們要在多台主機上刪除許多行時,這將變得乏味且容易出錯, 我們應該使用一些自動的方法,而不是手動地把一行行刪除。(當然,我們仍然應該核對最後的結果是否正確。) 我們將使用一個簡單的示例來說明如何刪除這些行,假設我們正在組織一個派對,我們有兩個文件:all.txt 包含我們所有的朋友,而 remove.txt 包含不參加派對的朋友。 all.txt John Tom Tony Alex Michael Kalvin remove.txt Tony Alex Chris 留意雖然 “Chris” 存在於 remove.txt 內, 但卻不存於 all.txt 之中,在現實情況中,被要求刪除一行不存在的配置也是件相當平常的事。 如果文件中行的排序不能改變 1. grep -Fvxf remove.txt …
簡介 在這篇文章中,我們會探討 Python 中的 AttributeError: module ‘json’ has no attribute ‘loads’ 錯誤為何會出現以及應該如何解決,事不宜遲,讓我們嘗試重現這個錯誤吧! 重現這個錯誤 創建一個稱為 json.py 的 Python 程式,這只是一個從一條 string 中讀取 json 資料的簡單程式。 json.py #!/usr/bin/env python3 import json sample_json = ‘{ …
簡介 我們都是人,少不免會犯錯,你有沒有試過搞砸你的 dot files?我試過,但很幸運,我有恆常備份的習慣,所以我只需要把檔案還原至我的備份版本,恆常備份 dot files 是一個好習慣,你甚至可以把你的 dot files 上傳到 Github。我很幸運有檔案的備份,但如果我沒有備份,那我可以怎樣恢復我的檔案呢?當然,我們可以直接在 Github 上抓別人的的 dot files 來使用,不過,在這篇文章中,我們會教你如何還原 dot files 至系統的預設版本。 如何還原 home directory 中的 dot files? 在 Linux 中,有一個特別的 directory 稱作 …
簡介 在這篇文章中,我們會示範使用 find -ok 和 find -okdir 這兩個指令,這兩個指令跟 find -exec 和 find -execdir 有一樣的功能,不過,在執行指令前,他們先會跟你確認你是否真的想在該檔案上執行該指令,如果你想要更加小心,這些指令會是你的好幫手。 我們已經在這篇文章中解釋過 find -exec 和 find -execdir 之間的分別,今次我們不會再作解釋,如果你有興趣,可以看看該篇文章。 讓我們一起看看這些指令有甚麼不同吧。 創建以下的檔案架構。 noob@learnfromnoobs:~$ tree find-test/ find-test/ ├── dir1 │ …
find -exec 是一個很常用的指令,但有些人並不知道 find -execdir 這個指令的存在以及它們的分別,在這篇文章中,我們會探討這兩個指令的分別。 1. ‘find -exec’ 跟 ‘find -execdir’ 在不同的位置執行 find -exec 會在起始的位置執行,而 find -execdir 則會在目標存在的位置執行。 指令 執行位置 find -exec 起始的位置 find -execdir 目標存在的位置 讓我們用例子解說一下吧。 創建以下的檔案架構。 noob@learnfromnoobs:~$ …
有時,我們或者需要隱藏用戶輸入,令用戶的需入不會在終端機(terminal)中顯示,特別是當我們的 script 需要取得用戶密碼時。 tl;dr 1. read -s 我們可以使用 read 指今加上 -s 選項來讀取密碼,這樣我們的 script 就不會顯示出用戶輸入的密碼。 例如: #!/bin/bash read -s -p “Enter password: ” password echo echo “password: $password” 範例輸出: noob@learnfromnoobs:~$ ./input_password_read.sh …