列2と5のデータが「null」と等しくない場合は、sedまたはawkを効率的に使用して特定の列(列1など)のcsvデータを操作する方法の例を見つけようとします。
フィルタリングされていない例:
埋められていない、空、データ、データ、空、データ 無人島、データ、データ、データ、データ,データ 無人島、データ、データ、データ、空、データ 埋められていない、空、データ、データ、空、データ 埋められない、空、データ、データ、データ,データ
になります:
埋められていない、空、データ、データ、空、データ 人口が密集した、データ、データ、データ、データ,データ 無人島、データ、データ、データ、空、データ 埋められていない、空、データ、データ、空、データ 埋められない、空、データ、データ、データ,データ助けてくれてありがとう!
答え1
awk 'BEGIN{ FS=OFS="," }
$2!="NULL" && $5!="NULL"{$1="POPULATED"}1' infile.csv
FSは入力です。F生産するS区切り記号とOFS酸素出力F生産するS区切り文字、両方ともコンマ文字で設定します。スタート入力ファイルを処理する前にNINGを実行してください。
私たちはこれら2つの列(column#2$2
とcolumn#5 $5
)を持っています無効値)!="NULL"
最初の列の値を更新して$1="POPULATED"
からイディオム1
最後に、すべての変更が適用された入力行が出力されます。
空の列に対してNULLを意味する場合は、次のように空の文字列と比較してください。
awk 'BEGIN{ FS=OFS="," }
$2!="" && $5!=""{$1="POPULATED"}1' infile.csv
答え2
#!/usr/bin/python
k=open('filepath','r')
for i in k:
gsplit=i.strip().split(',')
if (gsplit[1] != "NULL" and gsplit[4] !="NULL"):
jk="POPULATED"
print jk+","+",".join(gsplit[1:])
else:
print i.strip()
出力
UNPOPULATED,NULL,DATA,DATA,NULL,DATA
POPULATED,DATA,DATA,DATA,DATA,DATA
UNPOPULATED,NULL,DATA,DATA,NULL,DATA
UNPOPULATED,NULL,DATA,DATA,NULL,DATA
POPULATED,DATA,DATA,DATA,DATA,DATA