我正在驗證管道分隔文件中的幾列。我的第二列默認爲'*'。通過bash格式化星號
E.g.要驗證的文件數據:
abc|* |123
def|** |456
ghi|* |789
由於數據錯誤,第2條記錄有2顆星。
我teied它:
Value_to_match="*"
unmatch_count=cat <filename>| cut -d'|' -f2 | awk '{$1=$1};1' | grep -vw "$Value_to_match" | sort -n | uniq | wc -l
echo "unmatch_count"
這給了我算作0,而我期待1(爲**
),因爲我已經使用-w
使用grep是精確匹配和-v這是反轉的比賽。如何可以grep **
?
另外,請注意'unmatch_count = cat | ......不會工作。如果要將命令的輸出存儲在變量中,請說'var = $(command)'。 –
fedorqui
把貓''剪切'''剪切'到'awk'和'awk'到'grep'管道只是瘋狂。 'awk -F'\ t'-vx =「$ Value_to_match」'$ 2!= x {a [$ 2] ++} END {for(s in a)printf(「%8d%s \ n」,a [s ],s}'文件名'(猜一點你在想什麼) – tripleee
沒有人在大學裏教shell腳本嗎?好悲痛... –