我有 50 個這樣的文本檔案。所有檔案名都以 ENSG00000 開頭...
"number" "variant_id" "gene_id" "tss_distance" "ma_samples" "ma_count" "maf" "pval_nominal""slope" "slope_se" "hg38_chr" "hg38_pos" "ref_allele" "alt_allele" "hg19_chr" "hg19_pos" "ID" "new_MAF" "CHROM" "POS" "REF" "ALT" "A1" "OBS_CT" "BETA" "SE" "P" "SD" "Variance"
"14" 6253456 "chr1_17726150_G_A_b38" "ENSG00000186715.10" 955913 68 78 0.0644628 0.895156 0.0139683 0.105945 "chr1" 17726150 "G" "A" "chr1" 18052645 "rs260514:18052645:G:A0.058155 1 18052645 "G" "A" "G" 1597 0.0147047 0.0656528 0.822804 2.62364886486368 6.88353336610048
我想去掉檔案中每個值周圍的語音標記,所以它看起來像下面這樣。當我嘗試使用一個檔案時,我正在使用下面的腳本。
number variant_id gene_id tss_distance ma_samples ma_count maf pval_nominal slope slope_se hg38_chr hg38_pos ref_allele alt_allele hg19_chr hg19_pos ID new_MAF CHROM POS REF ALT A1 OBS_CT BETA SE P SD Variance
14 6253456 chr1_17726150_G_A_b38 ENSG00000186715.10 955913 68 78 0.0644628 0.895156 0.0139683 0.105945 chr1 17726150 G A chr1 18052645 rs260514:18052645:G:A0.058155 1 18052645 G A G 1597 0.0147047 0.0656528 0.822804 2.62364886486368 6.88353336610048
但是,我想通過回圈將 awk 腳本應用于所有 50 個檔案。但是,當我使用下面的腳本時,我沒有得到任何輸出。
#!/bin/bash
#PBS -N Edit
#PBS -l walltime=01:00:00
#PBS -l nodes=1:ppn=8
#PBS -l vmem=10gb
#PBS -m bea
for i in ENSG00000*; do
awk '{ gsub(/"/, ""); print }' > $i.out
done
uj5u.com熱心網友回復:
也許這就是你所需要的
sed -i '' 's/"//g' ENSG00000*
如果您希望就地編輯檔案。
uj5u.com熱心網友回復:
使用 awk 僅洗掉某些字符有點矯枉過正。你為什么不簡單地做一個
tr -d '"' <$i >$i.out
?
uj5u.com熱心網友回復:
您忘記指定 awk 掃描的輸入檔案。嘗試:
for i in ENSG00000*; do
awk '{ gsub(/"/, ""); print }' $i > $i.out
done
uj5u.com熱心網友回復:
建議awk沒有回圈的腳本:
awk -i inplace '{ gsub(/"/, ""); print }' ENSG00000*
但sed上面的解決方案是最好的:
sed -i '' 's/"//g' ENSG00000*
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/537539.html
標籤:狂欢循环awk
上一篇:使用增量重命名資料框的列名
