다음과 같은 input.txt 파일(4줄)이 있습니다.
GGTAACC_MIR4095P USP7 MKRN1 TSHZ3 EIF2C1 SRSF8 CAMK2G ARID4B
GCM_TINF2 MORF4L1 ABHD16A ZNF274 C7orf43 SNX33
chr9q34 MRPL41 OR5C1 LOC138159 GBGT1
REACTOME_SIGNALING_BY_NOTCH1 HDAC6 HDAC5 MAMLD1
이 파일을 4개의 파일(원래 파일은 39줄)로 분할하여 각각 줄의 첫 번째 단어로 이름이 지정된 4개의 파일을 얻으려면 어떻게 해야 합니까? GGTAACC_MIR4095P.txt GCM_TINF2.txt chr9q34.txt REACTOME_SIGNALING_BY_NOTCH1.txt
지금까지 내가 시도한 것은 다음과 같습니다.
split -d -a 2 -l 1 input.txt output_
이것은 내가 필요한 솔루션과는 거리가 멀다.
@steeldriver가 제안한대로 솔루션은 다음과 같습니다.
awk -F " " '{print >$1".txt"}' input.txt
답변1
밀러(https://github.com/johnkerl/miller) 사용
mlr --nidx --ifs ' ' --repifs unsparsify then put -q 'tee > $1.".txt", $*' input.txt
다음 네 가지 파일이 있습니다.
chr9q34.txt
GCM_TINF2.txt
GGTAACC_MIR4095P.txt
REACTOME_SIGNALING_BY_NOTCH1.txt
답변2
고환을 구현하려면 다음 명령을 사용하십시오. 정상적으로 작동합니다.
count=`wc -l filename| awk '{print $1}'`
praveen@praveen:~$
praveen@praveen:~$ for ((i=1;i<=$count;i++)); do j=`sed -n ''$i'p' filename`;awk -v i="$i" 'NR == i {print $0}' filename >$j.txt;done
praveen@praveen:~$