다른 열과 구분 기호 (쉼표, 공백 및 탭)마다 여러 개의 파일이 있습니다. 특정 열의 모든 행의 처음 10자를 제거해야합니다. 예를 들어 sed 's/..........//'는이 트릭을 수행 할 수 있지만 원하는 열을 어떻게 표시 할 수 있으며 어떻게 파일의 구분 기호를 지정할 수 있습니까? 아마도 awk로 더 쉽게 할 수 있을까요? awk를 사용하면 열을 지정하는 방법을 알지만 처음 10자를 지우는 방법은 알지 못합니다. 감사.파일에서 문자를 제거합니다 (bash).
-4
A
답변
1
프런트 제거 기능 등을 정의 FS
의 구분 : 당신이 도움이 될 예제를 제공하는 경우
$ cat > test.in # \t below is really a tab
12345678901 2,3\t4
$ cat > test.awk
function ftrunc(str) { # this function removes up to 10 first chars of a named field
gsub(/^.{1,10}/,"",str)
return str
}
BEGIN {
FS="[, \t]" # look at me! look at me! look at me!
OFS="|"
}
{
print ftrunc($1),ftrunc($2),$3,$4
}
$ awk -f test.awk test.in
1||3|4
4
질문의 첫 번째 부분은, 필드의 처음 10 개 개의 문자를 삭제하는 방법을 한 가지 방법은 다음과 같이이다 : 빈 종료됩니다 10 개 이하의 문자
$ echo 1234567890ABCDEF | awk '{$1=substr($1,11)}1'
ABCDEF
필드.
둘째, 당신은 출력에 같은 구분을 유지하려는 가정, 필드 구분 기호를 지정하려면, 그것은 BEGIN
블록을 사용하고 FS
및 OFS
내장의 AWK 변수를 설정하는 것이 가장 좋습니다. 이 예에서
$ echo field1,1234567890ABCDEF,field3 | awk 'BEGIN {FS=OFS=","} {$2=substr($2,11)}1'
field1,ABCDEF,field3
(탭 - 구분 된 경우 : BEGIN {FS=OFS="\t"}
)를
관련 문제
- 1. 파이썬 파일에서 마지막 4 문자를 제거합니다.
- 2. Bash는 선행 공백이없는 문자를 제거합니다.
- 3. Bash 변수는 이상하게 현재 디렉토리의 출력을 포함하고 문자를 제거합니다.
- 4. svn에 안전한^M 문자를 제거합니다.
- 5. URL의 문자열에서 문자를 제거합니다.
- 6. Codeigniter는 HTML에서 문자를 제거합니다.
- 7. regex가 모든 문자를 제거합니다.
- 8. Python은리스트에서 같은 문자를 제거합니다.
- 9. 문자열의 중복 문자를 제거합니다.
- 10. datagridview는 문자열에서 '&'문자를 제거합니다.
- 11. 마지막 문자를 제외한 문자열에서 문자를 제거합니다.
- 12. Bash 문자열에서 대괄호를 바꾸거나 제거합니다.
- 13. 파일에서 행을 제거합니다.
- 14. 파이썬 출력에서`u` 문자를 제거합니다
- 15. 문자열에서 숫자가 아닌 문자를 제거합니다.
- 16. SMS에서 지원되지 않는 문자를 제거합니다.
- 17. .NET 문자열 할당로 문자를 제거합니다.
- 18. python의 목록에서 문자를 제거합니다. \ pygame
- 19. Regex는 문자열의 마지막 문자를 제거합니다.
- 20. 잘못된 문자를 제거합니다. Excel 시트
- 21. 문자열에서 낯선 알파벳 문자를 제거합니다.
- 22. URL에서 원하지 않는 문자를 제거합니다.
- 23. 8 문자를 추출하는 방법 bash 스크립트 파일에서 대문자 문자열
- 24. 자바가 XML 파일에서 자식을 제거합니다.
- 25. 특정 줄을 PHP 파일에서 제거합니다.
- 26. 자막 파일에서 "acceleration"을 제거합니다.
- 27. 내 deb 파일에서/opt를 제거합니다.
- 28. CSV 파일에서 열을 검색하고 제거합니다.
- 29. 파일에서 패스하는 Bash 스크립팅
- 30. 파일에서 bash 문자열 바꾸기
... – armandino
입력의 예를 제공하고 원하는하세요 산출. –
awk는'substr()'함수를 사용할 수 있습니다. 당신은'awk '{$ 3 = substr ($ 3,1,10); print $ 0}'와 같은 것을 할 수 있습니다 (분명히 필드 3을 가정). 더 자세한 설명을 위해 모든 awk 문자열 함수가있는 [이 멋진 페이지] (https://www.gnu.org/software/gawk/manual/html_node/String-Functions.html)를 확인하십시오. – JNevill