셸 프로 그래 밍 노트 - 흐름 편집 Sed
뭐 공부 해요?
편집기 선택
UNIX/Linux 세계 에는 선택 할 수 있 는 많은 텍스트 편집기 가 있 습 니 다.예 를 들 어 가장 자주 사용 하 는 VI 와 emacs.자신 이 가장 잘 아 는 편집 이기 가 생 긴 후에 야 유 닉 스 의 각종 관리 와 편집 임 무 를 쉽게 처리 할 수 있다.
VI, emacs 와 같은 편집 기 는 상호작용 편집기 라 고 불 린 다.대화 형 편집 기 는 좋 지만 프로그램 에서 텍스트 처리 작업 을 끝내 야 할 때 도움 이 되 지 않 습 니 다.명령 행 에서 완성 할 수 있 는 편집 도구 가 필요 합 니 다.
우 리 는 일괄 처리 방식 으로 파일 을 편집 할 수 있 는 모든 관리 절차 가 자동화 되 기 를 기대한다.많은 텍스트 편집 에 대한 요 구 는 텍스트 의 줄 마다 같은 동작 을 하 는 것 이다.이런 처 리 는 sed 로 완성 할 수 있다.
sed 는 스 트림 편집기 라 고 합 니 다.스 트림 편집기 가 무엇 입 니까?스 트림 편집 기 는 파이프 와 같은 표준 입력 으로 받 은 데 이 터 를 편집 할 수 있 습 니 다.따라서 편집 할 데 이 터 를 디스크 에 저장 할 필요 가 없다.데이터 파 이 프 를 sed 로 쉽게 출력 할 수 있 기 때문에 sed 를 강력 한 셸 스 크 립 트 의 길 고 복잡 한 파이프 로 사용 하기 쉽 습 니 다.
Sed 버 전
버 전 보기
[houchangren@ebsdi-23260-oozie ~]$ sed --version
GNU sed version 4.1.5
Copyright (C) 2003 Free SoftwareFoundation, Inc.
This is free software; see the source forcopying conditions. There is NO
warranty; not even for MERCHANTABILITY orFITNESS FOR A PARTICULAR PURPOSE,
to the extent permitted by law.
Sed 인 스 턴 스
Sed 의 작업 방식
sed 는 입력 데 이 터 를 통 해 사용자 가 지정 한 편집 작업 (명령) 을 수행 합 니 다.sed 는 줄 에 기반 한 것 이기 때문에
모든 줄 에 순서대로 명령 을 집행 하 다.그리고 sed 는 그 결 과 를 표준 출력 (stdout) 에 기록 합 니 다. 입력 을 수정 하지 않 습 니 다.
서류
매개 변수 목록 참조:
http://www.cnblogs.com/edwardlost/archive/2010/09/17/1829145.html
예시:
[houchangren@ebsdi-23260-oozie shell]$ head -n5 /etc/passwd > /tmp/passwd.bak
[houchangren@ebsdi-23260-oozie shell]$cat /tmp/passwd.bak
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[houchangren@ebsdi-23260-oozie shell]$ sed -e 'd' /tmp/passwd.bak
[houchangren@ebsdi-23260-oozie shell]$ sed -e '1d' /tmp/passwd.bak
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[houchangren@ebsdi-23260-oozie shell]$ sed -e '3d' /tmp/passwd.bak
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
위의 'd' 는 매개 변수 애플 리 케 이 션 입 니 다. 모든 줄 을 삭제 하 는 것 이 기본 입 니 다. 지정 한 숫자 는 몇 번 째 줄 의 기록 을 삭제 하고 첫 번 째 줄 의 1 줄 표시 후 네 줄 을 삭제 합 니 다.두 번 째 는 3 조 를 삭제 하고 나머지 4 조 를 표시 합 니 다.
NOTE
이 예 에서 몇 가지 주의해 야 할 일이 있다.
1)/tmp/passwd. bak 를 수정 하지 않 았 습 니 다. 이것 은 sed 가 명령 행 에서 지정 한 파일 만 읽 기 때문에 입력 으로 사용 합 니 다. - 이 파일 을 수정 하려 고 하지 않 습 니 다.
2) 주의해 야 할 일 은 sed 가 행 을 향 한 것 이다.d '명령 은 sed 에 게 모든 입력 데 이 터 를 한꺼번에 삭제 하 라 고 간단하게 알려 주 는 것 이 아니다.반면, sed 는 한 줄 씩/etc/passwd. bak 의 모든 줄 을 모드 버퍼 라 는 내부 버퍼 에 읽 고 한 줄 을 모드 버퍼 에 읽 으 면 'd' 명령 을 실행 한 다음 모드 버퍼 의 내용 을 인쇄 합 니 다 (이 예 에 서 는 내용 이 없습니다). 주 소 를 사용 하지 않 으 면 명령 은 모든 줄 에 적 용 됩 니 다.
3) 'd' 명령 을 포함 하 는 작은 따옴표 의 용법.단일 따옴표 로 scd 명령 을 묶 는 습관 을 기 르 는 것 은 좋 은 생각 입 니 다. 셸 확장 을 사용 하지 않 아 도 됩 니 다.
Sed 작업 주소 범위
명령 의 작업 줄 영역 을 지정 합 니 다. 예 를 들 어 아래 1 - 2 줄 과 3 - 6 줄 은 물론 6 줄 이 없 으 면 삭제 하 는 만큼 만 있 습 니 다.
[houchangren@ebsdi-23260-oozie shell]$ sed -e '1,2d' /tmp/passwd.bak
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
[houchangren@ebsdi-23260-oozie shell]$ sed -e '3,6d' /tmp/passwd.bak
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
sed 주석 무시
[houchangren@ebsdi-23260-oozie shell]$ cat /etc/rc.local
#!/bin/sh
#
# This script will be executed *after* allthe other init scripts.
# You can put your own initialization stuffin here if you don't
# want to do the full Sys V style initstuff.
touch /var/lock/subsys/local
hive --service hiveserver &
[houchangren@ebsdi-23260-oozie shell]$ sed -e '/^#/d' /etc/rc.local | more
touch /var/lock/subsys/local
hive --service hiveserver &
[houchangren@ebsdi-23260-oozie shell]$ sed -e '/^[^#]/d' /etc/rc.local | more
#!/bin/sh
#
# This script will be executed *after* allthe other init scripts.
# You can put your own initialization stuffin here if you don't
# want to do the full Sys V style initstuff.
규칙 식
Sed 에서 사용 하 는 규칙 식 문자
문자
묘사 하 다.
^
행수 와 일치
$
줄 끝 과 일치
.
임의의 문자 와 일치 합 니 다.
*
이전 문자 의 0 개 이상 과 일치 합 니 다.
[]
[] 안의 모든 문자 와 일치 합 니 다.
Sed 규칙 식 인 스 턴 스
규칙 식
묘사 하 다.
/./
최소한 한 문 자 를 포함 하 는 모든 줄 과 일치 합 니 다.
/../
최소 두 문 자 를 포함 하 는 모든 줄 과 일치 합 니 다.
/^#/
'\#' 로 시작 하 는 임의의 줄 과 일치 합 니 다. 보통 주석 입 니 다.
/}$/
'}' 이 끝 난 임의의 줄 과 일치 합 니 다.
/} *$/
} 뒤에 빈 칸 이 있 습 니 다. 이것 은 '}' 이후 0 개 이상 의 빈 칸 이 끝 난 임의의 줄 과 일치 합 니 다.
/[abc]/
소문 자 'a, b, c 를 포함 하 는 임의의 줄 과 일치 합 니 다.
/^[abc]/
a, b, c 로 시작 하 는 모든 줄 과 일치 합 니 다.
- n 매개 변수 이 옵션 은 sed 에 인쇄 모드 공간 을 명확 하 게 요구 하지 않 으 면 이렇게 하지 않 는 다 는 것 을 알려 줍 니 다.
[houchangren@ebsdi-23260-oozie shell]$ sed -n -e '/^[echo]/p' user_login.sh
echo " user $1 is on"
else
echo " user $1 is off"
[houchangren@ebsdi-23260-oozie shell]$ sed -n -e '/[abc]/p' user_login.sh
#!/bin/bash
function user_login(){
echo " user $1 is on"
echo " user $1 is off"
[houchangren@ebsdi-23260-oozie shell]$ cat a.c
#include <stdio.h>
#include <math.H>
int main (){
// int base,n;
// scanf("%d,%d
",&b,&n)
}
[houchangren@ebsdi-23260-oozie shell]$ sed -n -e '/main[[:space:]]*(/,/^ }/p' a.c | more
int main (){
// int base,n;
// scanf("%d,%d
",&b,&n)
}
[houchangren@ebsdi-23260-oozie shell]$ sed -n -e '/^\//p' a.c | more
// int base,n;
// scanf("%d,%d
",&b,&n)
강력 한 Sed 기능
바꾸다
대체 공식: sed - e s [기호] [바 꿀 문자] [기호] [바 꾼 문자] [기호] [g]
실례:
[houchangren@ebsdi-23260-oozie data]$ cattwister.txt //
I wish to wish the wish you wish to wish,but if you wish the wish the witch
wishes, I won't wish the wish you wish towish.
I wish to wish the wish you wish to wish,but if you wish the wish the witch
wishes, I won't wish the wish you wish towish.
I wish to wish the wish you wish to wish,but if you wish the wish the witch
wishes, I won't wish the wish you wish towish.
I wish to wish the wish you wish to wish,but if you wish the wish the witch
wishes, I won't wish the wish you wish towish.
[houchangren@ebsdi-23260-oozie data]$ sed -e 's/wish/want/' twister.txt //
I want to wish the wish you wish to wish,but if you wish the wish the witch
wantes, I won't wish the wish you wish towish.
I want to wish the wish you wish to wish,but if you wish the wish the witch
wantes, I won't wish the wish you wish towish.
I want to wish the wish you wish to wish,but if you wish the wish the witch
wantes, I won't wish the wish you wish towish.
I want to wish the wish you wish to wish,but if you wish the wish the witch
wantes, I won't wish the wish you wish towish.
[houchangren@ebsdi-23260-oozie data]$ sed -e 's/wish/want/g' twister.txt //
I want to want the want you want to want,but if you want the want the witch
wantes, I won't want the want you want towant.
I want to want the want you want to want,but if you want the want the witch
wantes, I won't want the want you want towant.
I want to want the want you want to want,but if you want the want the witch
wantes, I won't want the want you want towant.
I want to want the want you want to want,but if you want the want the witch
wantes, I won't want the want you want towant.
[houchangren@ebsdi-23260-oozie data]$ sed -e '1,2s/wish/want/' twister.txt // 1 2
I want to wish the wish you wish to wish,but if you wish the wish the witch
wantes, I won't wish the wish you wish towish.
I wish to wish the wish you wish to wish,but if you wish the wish the witch
wishes, I won't wish the wish you wish towish.
I wish to wish the wish you wish to wish,but if you wish the wish the witch
wishes, I won't wish the wish you wish towish.
I wish to wish the wish you wish to wish,but if you wish the wish the witch
wishes, I won't wish the wish you wish towish.
[houchangren@ebsdi-23260-oozie data]$ sed -e '1,2s/wish/want/g' twister.txt // 1 2
I want to want the want you want to want,but if you want the want the witch
wantes, I won't want the want you want towant.
I wish to wish the wish you wish to wish,but if you wish the wish the witch
wishes, I won't wish the wish you wish towish.
I wish to wish the wish you wish to wish,but if you wish the wish the witch
wishes, I won't wish the wish you wish towish.
I wish to wish the wish you wish to wish,but if you wish the wish the witch
wishes, I won't wish the wish you wish towish.
[houchangren@ebsdi-23260-oozie data]$
'/' 기호 가 필요 할 때 가 있 으 니까 '/' 선 을 사용 하 세 요.
부 호 를 만 들 기 가 불편 하 니 다른 것 으로 바 꿀 수 있다. 예 를 들 어 사칭 ':'
[houchangren@ebsdi-23260-oozie data]$ cat hivepath.txt
/usr/local/hive-0.7.1-cdh3u6/bin/hive
/usr/local/hive-0.7.1-cdh3u6/bin/hive
/usr/local/hive-0.7.1-cdh3u6/bin/hive
/usr/local/hive-0.7.1-cdh3u6/bin/hive
[houchangren@ebsdi-23260-oozie data]$ sed -e s:/usr/local:/usr/lib:g hivepath.txt
/usr/lib/hive-0.7.1-cdh3u6/bin/hive
/usr/lib/hive-0.7.1-cdh3u6/bin/hive
/usr/lib/hive-0.7.1-cdh3u6/bin/hive
/usr/lib/hive-0.7.1-cdh3u6/bin/hive
모든 html 태그 인 스 턴 스 필터
[houchangren@ebsdi-23260-oozie data]$ cat test.html
<!DOCTYPE HTML PUBLIC "-//W3C//DTDHTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<TITLE> New Document </TITLE>
<META NAME="Generator" CONTENT="EditPlus">
<META NAME="Author" CONTENT="">
<META NAME="Keywords" CONTENT="">
<META NAME="Description" CONTENT="">
</HEAD>
<BODY>
I'mtest html
</BODY>
</HTML>
[houchangren@ebsdi-23260-oozie data]$ sed -e 's/<[^>]*>//g' test.html
New Document
I'mtest html
조합 명령
여러 명령 조합
여러 명령 을 동시에 사용 할 때 분 호 를 사용 할 수 있다.
[houchangren@ebsdi-23260-oozie data]$ sed -e '=' fruit.txt // =
1
%%banae
2
banana
3
apple
4
Presimmon
5
%%banae
6
apple
7
Banana
8
orange
9
presimmon
[houchangren@ebsdi-23260-oozie data]$ sed -e '=;p' fruit.txt //
1
%%banae
%%banae
2
banana
banana
3
apple
apple
4
Presimmon
Presimmon
5
%%banae
%%banae
6
apple
apple
7
Banana
Banana
8
orange
orange
9
presimmon
presimmon
[houchangren@ebsdi-23260-oozie data]$ sed -n -e '=;p' fruit.txt // -n p
1
%%banae
2
banana
3
apple
4
Presimmon
5
%%banae
6
apple
7
Banana
8
orange
9
Persimmon
[houchangren@ebsdi-23260-oozie data]$ sed -n -e 'p' -e = fruit.txt //-e
%%banae
1
banana
2
apple
3
Presimmon
4
%%banae
5
apple
6
Banana
7
orange
8
presimmon
9
때로는 너무 많은 명령 이 연결 되 어 실 행 될 때 - e 도 부족 할 수 있 습 니 다. - f 로 텍스트 를 지정 한 다음 텍스트 에 명령 을 작성 할 수 있 습 니 다.
[houchangren@ebsdi-23260-oozie data]$ cat hivepath.txt
/usr/local/hive-0.7.1-cdh3u6/bin/hive
/usr/local/hive-0.7.1-cdh3u6/bin/hive
/usr/local/hive-0.7.1-cdh3u6/bin/hive
/usr/local/hive-0.7.1-cdh3u6/bin/hive
//1d , /usr/local /usr/bin, ,
[houchangren@ebsdi-23260-oozie data]$ cat ../sed/test.sed
1d
s:/usr/local/:/usr/lib/:g
p
=
[houchangren@ebsdi-23260-oozie data]$ sed -n -f ../sed/test.sed hivepath.txt
/usr/lib/hive-0.7.1-cdh3u6/bin/hive
2
/usr/lib/hive-0.7.1-cdh3u6/bin/hive
3
/usr/lib/hive-0.7.1-cdh3u6/bin/hive
4
여러 명령 을 주소 범위 에 적용 합 니 다.
1 - 5 줄 같은 주소 범 위 를 지정 한 다음 여러 작업 을 수행 합 니 다.
[houchangren@ebsdi-23260-oozie data]$ head -n10 /etc/passwd > pwd.piece
[houchangren@ebsdi-23260-oozie data]$ cat pwd.piece
root:x:0:0:root:/root:/bin/bash
bin:x:1:1:bin:/bin:/sbin/nologin
daemon:x:2:2:daemon:/sbin:/sbin/nologin
adm:x:3:4:adm:/var/adm:/sbin/nologin
lp:x:4:7:lp:/var/spool/lpd:/sbin/nologin
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/var/spool/mail:/sbin/nologin
news:x:9:13:news:/etc/news:
[houchangren@ebsdi-23260-oozie data]$ sed -n -e'1,5{s:/bin/bash:/bin/sh:g;s/:/|/g;p}' pwd.piece
[houchangren@ebsdi-23260-oozie data]$ sed -n -e '1,5{s:/bin/bash:/bin/sh:g;s/:/|/g;p}' pwd.piece
root|x|0|0|root|/root|/bin/sh
bin|x|1|1|bin|/bin|/sbin/nologin
daemon|x|2|2|daemon|/sbin|/sbin/nologin
adm|x|3|4|adm|/var/adm|/sbin/nologin
lp|x|4|7|lp|/var/spool/lpd|/sbin/nologin
[houchangren@ebsdi-23260-oozie data]$
[houchangren@ebsdi-23260-oozie data]$ cat ../sed/pwd.sed
1,5{
s:/bin/bash:/bin/sh:g
s/:/|/g
p
}
[houchangren@ebsdi-23260-oozie data]$ sed -n -f ../sed/pwd.sed pwd.piece
root|x|0|0|root|/root|/bin/sh
bin|x|1|1|bin|/bin|/sbin/nologin
daemon|x|2|2|daemon|/sbin|/sbin/nologin
adm|x|3|4|adm|/var/adm|/sbin/nologin
lp|x|4|7|lp|/var/spool/lpd|/sbin/nologin
실례 적 인 예
LINUX 와 DOS/Windows 시스템 의 일반 텍스트 형식의 줄 바 꾸 기 방식 은 다르다.이 스 크 립 트 는 유 닉 스 스타일 의 텍스트 를 DOS/windows 형식 으로 변환 합 니 다.DOS, windows 기반 텍스트 파일 은 줄 끝 에 CR (리 턴) 과 LF (줄 바 꿈) 가 있 고 UNIX 텍스트 는 줄 바 꿈 이 하나 밖 에 없다 는 것 을 알 수 있 습 니 다.어떤 유 닉 스 텍스트 를 옮 겨 야 할 수도 있 습 니 다.
Windows 시스템, 이 스 크 립 트 는 필요 한 형식 변환 을 실행 합 니 다.
>>> sed -e ‘s/$/\r/’myunix.txt > mydos.txt
이 스 크 립 트 에서 '$' 규칙 표현 식 은 줄 의 끝 과 일치 합 니 다. '\r' 는 sed 에 게 그 전에 리 턴 을 삽입 하 라 고 알려 줍 니 다.
줄 을 바 꾸 기 전에 리 턴 을 삽입 하면 줄 마다 CR/LF 로 끝난다.
반면에 다운로드 한 네트워크 파일 은 dos/windows 파일 로 유 닉 스 작업 에 문제 가 있 습 니 다. 예 를 들 어 bash.dos/windows 형식의 텍스트 를 신뢰 할 수 있 는 유 닉 스 형식 으로 sed 호출 합 니 다.
>>> sed –e ‘s/.$//’ mydos.txt >myunix.txt
이 스 크 립 트 의 작업 원 리 는 매우 간단 합 니 다. 대체 규칙 표현 식 은 한 줄 의 마지막 문자 와 일치 하 며, 이 문 자 는 마침 리 턴 입 니 다.우 리 는 빈 문자 로 그것 을 교체 해서 출력 에서 완전히 삭제 했다.변경 스 크 립 트 를 사용 하고 출력 줄 의 마지막 문 자 를 삭 제 했 음 을 알 게 되면 유 닉 스 식 텍스트 파일 을 지정 합 니 다.
Sed 실천
요청:
1. '소명' 의 이름 을 '이소 명' 으로 바꾸다.
2. 첫 세 줄 삭제
3. 5 - 10 줄 보이 기
4. "제외"를 포함 하 는 줄 삭제
5. 모든 생일 이 Nov 와 Dec 사이 에 있 는 줄 보이 기
6. 모든 성 시작 줄, 앞 에 표시 * * *
7. "수습 기간 인원"으로 "수습"을 포함 하 는 줄 을 교체 합 니 다.
8. 유 발명의 생일 1986/11/11
9. 모든 빈 줄 삭제
10. 스 크 립 트 를 작성 하고 첫 줄 을 Personnel File 에 삽입 하여 500 으로 끝 나 는 모든 월급 을 삭제 하고 파일 내용 을 표시 하 며 전화번호 와 생일 을 뒤 바 꾸 어 파일 의 끝 에 the end 를 추가 합 니 다.
11. '시용' 이 포 함 된 줄 의 이름 을 추출 한 다음, '시용 인원:' + name 으로 바 꿉 니 다.
데이터 내용:
[houchangren@ebsdi-23260-oozie data]$ cat persons.txt
:010-68239343: :1988/01/10:5000
:010-68239343: :1988/08/10:5000
:010-68239343: :1988/04/10:5000
:010-68239343: 。:1988/10/10:500
:010-68239343: :1988/12/10:2000
:010-68239343: :1988/11/10:5340
:010-68239343: :1988/10/10:1000
:010-68239343: :1988/10/10:1000
:010-68239343: .:1988/10/10:200
:
1.
[houchangren@ebsdi-23260-oozie data]$ sed -n -e 's: : :gp' persons.txt
:010-68239343: :1988/01/10:5000
2.
[houchangren@ebsdi-23260-oozie data]$ sed -e '1,3d' persons.txt
:010-68239343: 。:1988/10/10:500
:010-68239343: :1988/12/10:2000
:010-68239343: :1988/11/10:5340
:010-68239343: :1988/10/10:1000
:010-68239343: :1988/10/10:1000
:010-68239343: .:1988/10/10:200
3.
:010-68239343: 。:1988/10/10:500
:010-68239343: :1988/12/10:2000
:010-68239343: :1988/11/10:5340
4.
[houchangren@ebsdi-23260-oozie data]$ sed -e '/ /d' persons.txt
:010-68239343: :1988/01/10:5000
:010-68239343: :1988/08/10:5000
:010-68239343: :1988/04/10:5000
:010-68239343: :1988/12/10:2000
:010-68239343: :1988/11/10:5340
:010-68239343: :1988/10/10:1000
:010-68239343: :1988/10/10:1000
:010-68239343: .:1988/10/10:200
5.
[houchangren@ebsdi-23260-oozie data]$ sed -n '/[:::][0-9]*[:/:]1[1-2]/p' persons.txt
:010-68239343: :1988/12/10:2000
:010-68239343: :1988/11/10:5340
6.
[houchangren@ebsdi-23260-oozie data]$ sed -n 's/^ /*** /p' persons.txt
*** :010-68239343: :1988/04/10:5000
7.
[houchangren@ebsdi-23260-oozie data]$ sed -e 's/^.* .*$/ /g' persons.txt
:010-68239343: :1988/01/10:5000
:010-68239343: :1988/08/10:5000
:010-68239343: :1988/04/10:5000
:010-68239343: 。:1988/10/10:500
:010-68239343: :1988/12/10:2000
:010-68239343: :1988/11/10:5340
:010-68239343: :1988/10/10:1000
:010-68239343: :1988/10/10:1000
8.
[houchangren@ebsdi-23260-oozie data]$ sed -n -e '/ /s/:[0-9]*\/.*\/.*:/:1986\/11\/11:/gp' persons.txt
:010-68239343: :1986/11/11:5340
9.
[houchangren@ebsdi-23260-oozie data]$ sed -e '/^$/d' persons.txt
:010-68239343: :1988/01/10:5000
:010-68239343: :1988/08/10:5000
:010-68239343: :1988/04/10:5000
:010-68239343: 。:1988/10/10:500
:010-68239343: :1988/12/10:2000
:010-68239343: :1988/11/10:5340
:010-68239343: :1988/10/10:1000
:010-68239343: :1988/10/10:1000
:010-68239343: .:1988/10/10:200
10.
[houchangren@ebsdi-23260-oozie data]$ cat ../sed/person.sed
/500$/d
s/\(.*\)\(:.*:\)\(.*\)\(:.*:\)\(.*\)/\1\4\3\2\5/g
1i personnel file
$a the end
[houchangren@ebsdi-23260-oozie data]$sed -f ../sed/person.sed persons.txt
personnel file
:1988/01/10: :010-68239343:5000
:1988/08/10: :010-68239343:5000
:1988/04/10: :010-68239343:5000
:1988/12/10: :010-68239343:2000
:1988/11/10: :010-68239343:5340
:1988/10/10: :010-68239343:1000
:1988/10/10: :010-68239343:1000
:1988/10/10: .:010-68239343:200
the end
11.
[houchangren@ebsdi-23260-oozie data]$ sed -n -e '/ /s/\(.*\):.*:.*:.*:.*/ :\1/gp' persons.txt | more
:
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
셸 스 크 립 트 (다 중 스 레 드 대량 생 성 사용자)예 를 들 어 백업 데이터 베 이 스 는 100 개의 라 이브 러 리 가 있 고 정상 적 인 백업 효율 이 매우 낮 습 니 다.다 중 스 레 드 가 있 으 면 백업 하 는 데 10 시간 이 걸 릴 수도 있 었 는데 ...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.