텍스트 파일에서 각 줄의 첫 번째 문자와 마지막 문자를 제거하고 결과 잘린 버전을 새 파일에 저장하려고 합니다. awk
대용량 파일을 위해 특별히 다른 Linux 프로그램/명령을 사용하여 이를 효율적으로 수행하는 방법을 아는 사람이 있습니까 ?
입력.txt
(s,2,4,5,6)
"s,1,5,5,2"
{z,0,4,5,3}
[y,2,4,5,5]
(y,4,4,5,7)
(r,20,4,5,7)
(e,9,4,5,2)
예상 출력.txt
s,2,4,5,6
s,1,5,5,2
z,0,4,5,3
y,2,4,5,5
y,4,4,5,79
r,20,4,5,7
e,9,4,5,2
답변1
이를 위한 또 다른 방법은 다음과 같습니다.
rev input | cut -c2- | rev | cut -c2-
(참고: GNU의 경우 cut
(귀하의 예에서와 같이) 1바이트로만 구성된 문자에만 작동합니다.)
답변2
귀하의 질문에 따라 다음과 같이 입력 파일에서 마지막 단어와 첫 번째 단어를 제거하십시오.
sed 's/.$//; s/^.//' inputfile
답변3
언제나 그렇듯이 가능성은 많습니다
sed 's,.\(.*\).$,\1,g' your_file
설명하다
,
-- sed 구분 기호는 필요할 때 이스케이프되는 한 다른 문자일 수도 있습니다..
단일 문자 일치\(.*\)
- 나머지 부분을 그룹화하여 추가 검색을 위해 보관합니다..
단일 문자를 다시 일치시킵니다.$
- 줄 끝\1
- 위 그룹과 일치하는 텍스트 출력g
전역적으로 교체하면 됩니다.
답변4
awk
원한다면 이렇게 할 수도 있습니다.
awk '{print substr($0,2,length()-2);}' input.txt > output.txt