我正在嘗試編寫腳本來捕獲和屏蔽特定列。我需要清除文本的4列,並且還將其掩蓋在輸出文件中。我不確定如何屏蔽同一列捕獲特定列和屏蔽列
請幫助我重寫以下命令或新命令
input.txt
---------
AA | BB | CC | 123456
output.txt
---------
BB | 123456 | 12xx56
劇本我寫
cat input.txt | nawk -F '|' '{print $2 "|" $4 "|" $4} >output.txt
我正在嘗試編寫腳本來捕獲和屏蔽特定列。我需要清除文本的4列,並且還將其掩蓋在輸出文件中。我不確定如何屏蔽同一列捕獲特定列和屏蔽列
請幫助我重寫以下命令或新命令
input.txt
---------
AA | BB | CC | 123456
output.txt
---------
BB | 123456 | 12xx56
劇本我寫
cat input.txt | nawk -F '|' '{print $2 "|" $4 "|" $4} >output.txt
nawk -F '|' '{print $2 "|" $4 "|" substr($4, 1,3) "xx" substr($4,6,2)}' input.txt > output.txt
輸出
BB | 123456| 12xx56
假設你並不真正需要的開頭和結尾的空格,我會做
echo "AA | BB | CC | 12345678" \
| awk -F '|' '{gsub(/ */, "", $0)
#dbg print "length$4=" (length($4)-4)
masking=sprintf("%"(length($4)-4)"s", " ") ; gsub(/ /, "x", masking)
print $2 "|" $4 "|" substr($4, 1,2) masking substr($4,(length($4)-1),2)
}'
BB|12345678|12xxxx78
我使用echo "..."
它
nawk -F '|' '{gsub(/ */, "", $0);print $2 "|" $4 "|" substr($4, 1,2) "xx" substr($4,5,2)}' input.txt > output.txt
cat output.txt
BB|123456|12xx56
最終解決方案簡化測試過程。你可以把它取出來,用input.txt > output.txt
代替,並且可以像以前一樣工作。
我已經添加了(length($4)-1)
,使得在$ 4動態的第二個字符到最後一個字符的位置,基於單詞$ 4的長度。
IHTH
是的。在你用xx屏蔽的命令中,我需要屏蔽該列以屏蔽 – user3326101
讓我們假設列不固定,我需要保留最後一行2位數字和輸出中的前2位數字應該是xxxxxx然後命令是什麼 – user3326101
第4列的值是否總是6個字符?如果不是,那麼編輯您的示例以表明您期望與其他尺寸發生的事情。祝你好運。 – shellter
第4列的值是固定長度,總是6個字符 – user3326101