입력.txt:
john_Apple01_xyz_1
john_Fruit_Apple01_abc_c1
john_Apple21_trs_1
john_Fruit_Apple21_efg_1
john_Fruit_Apple21_tefg_1
원하는 출력:
Apple01_xyz_1
Apple01_abc_c1
Apple21_trs_1
Apple21_efg_1
Apple21_tefg_1
줄에서 사과가 발견될 때마다 앞 부분을 잘라내기 위해 nawk 또는 sed를 어떻게 사용합니까?
저는 Solaris 10에서 KSH를 사용하고 있습니다.
답변1
@cuonglm의 댓글다음을 사용하여 이를 수행하는 방법을 설명합니다 sed
.
sed -e 's/.*\(Apple\)/\1/' input.txt
좋은 오래된 것을 사용하는 것을 고려할 수도 있습니다 grep
.
grep -o 'Apple.*' input.txt
경고 1 - 현재 가지고 있는 Solaris가 없으므로 Solaris에는 grep
이 옵션이 없을 수도 있습니다 -o
. YMMV.
참고 2 - 입력 파일에 Apple
s가 전혀 포함되지 않은 행이 있는 경우 해당 행은 출력에 전혀 표시되지 않습니다. 이것이 원하는 동작인지 확실하지 않습니다. 그렇지 않다면 sed
대답으로 충분할 것입니다.
답변2
당신은 nawk
또는 sed
. 언급했듯이 ksh
순수 쉘 버전을 만들어 보는 것은 어떨까요?
다음 명령은 POSIX 호환 셸에서 실행됩니다.
p="Apple"
while read line ; do
case $line in
(*$p*) echo $p${line#*$p};;
esac
done <<!
john_Apple01_xyz_1
john_Fruit_Apple01_abc_c1
john_Apple21_trs_1
john_Fruit_Apple21_efg_1
john_Fruit_Apple21_tefg_1
!
그 결과는 다음과 같습니다.
Apple01_xyz_1
Apple01_abc_c1
Apple21_trs_1
Apple21_efg_1
Apple21_tefg_1
순수한 껍질