동일한 형식의 파일이 많이 있습니다.
line 1: Gene ID
line 2: chromosomal position
line 3 - x: names of genetic variants)
최소한 5개의 변형이 포함된 파일(즉, 총 줄이 최소 10줄 이상인 파일)만 선택하고 싶습니다. 파일에 변형이 5개 이상 있으면 처음 두 줄을 제외한 내용을 새 파일에 쓰고 싶습니다. 아래에는 두 가지 예제 입력 파일 foo1
도 제공되어 있습니다 foo2
.
foo1:
echo {885743,4:139381:3783883,rs93487,rs82727,rs111} | tr " " "\n" > foo1
부자 2:
echo {10432,1:3747548:2192993,rs10204,rs262222,rs436363,rs3636,rs9878,rs11856} | tr " " "\n" > foo2
필요한 출력 파일(이 경우에는 파일이 1개만 있고 실제로는 여러 개의 별도 출력 파일이 있습니다): foo2.checked
아래와 같이:
rs10204
rs262222
rs436363
rs3636
rs9878
rs11856
답변1
이름에 흥미로운 문자가 포함된 파일이 없다고 가정
for file in *
do
line=$(wc -l < "$file' )
if [ $line -ge 10 ]
then
tail -n +3 <"$file" > "${file}.checked"
fi
done
이는 기본적으로 각 파일의 줄 수를 계산하고, 줄이 10개 이상이면 세 번째 파일부터 모든 줄을 인쇄합니다.
답변2
# for each file in the current directory you can refine the ls command to match
# only the files you want. or if in a script file pass in the file list
for file in *
do
# if the file has more than 10 lines.
if (( $(<"${file}" wc -l) > 10 )); then
# print line 3 to end of file and pipe it to a file with the same
# name as the input file with the added .checked at the end.
sed -n '3,$p' -- "${file}" > "${file}.checked"
fi
done