我在比較同一文件的兩列面臨的一個問題,然後對另一個慶典在
例如基礎更換一列的值相同的文件上多列的工作,我的文件是這樣的:
name col1 col2
abc no no
xyz yes yes
man no no
wrr no no
在這裏,我要檢查每一個文件的COL1我想改變COL2爲「N/A」
我在比較同一文件的兩列面臨的一個問題,然後對另一個慶典在
例如基礎更換一列的值相同的文件上多列的工作,我的文件是這樣的:
name col1 col2
abc no no
xyz yes yes
man no no
wrr no no
在這裏,我要檢查每一個文件的COL1我想改變COL2爲「N/A」
$ awk '$2=="no"{$3="N/A"}1' file
name col1 col2
abc no N/A
xyz yes yes
man no N/A
wrr no N/A
的價值使用sed
「不」值:
[ ~]$ sed "s/\([A-Za-z]*\ *no\ *\).*/\1N\/A/g" file
name col1 col2
abc no N/A
xyz yes yes
man no N/A
wrr no N/A
使用awk
:
[ ~]$ awk '$2 == "no" {$3="N/A"} {print $1"\t"$2"\t"$3}' file
[ ~]$ awk '$2 == "no" {$3="N/A"} {print $1" "$2" "$3}' file
# ...
這是一個awk問題:
[ ~]$ awk '$2 == "no" {$3="N/A"} {print}' file
name col1 col2
abc no N/A
xyz yes yes
man no N/A
wrr no N/A
你也可以,只要你想改變你的顯示器
cat your-file.txt | awk '{if ($2 == "no") { $3 = "N/A"; } print $0 }' > your-new-file.txt
下面是一個簡單的解決方案:
while read name col1 col2 ; do
if[[ "$col" = no ]]; then
echo "$name $col1 N/A"
else
echo "$name $col1 $col2"
fi
done < file
如果你需要更快,使用這個腳本awk
:
$1 == "no" { print $1" "$2" N/A"; next; }
{ print; }
你能否解釋一下呢? '1'到底做了什麼? – pfnuesel
這是顯示當前行的神祕方式。我真的應該把'{print}'代替爲了可讀性,但是試圖儘可能簡潔。 – jlliagre
我認爲字段分隔符是\ t,不是一個簡單的空格。所以你應該在這種情況下使用-F選項。 –