조개껍질로 이거 어떻게 해?자신의 비망록이 되다
개시하다
쉽게 잊어버리기 때문에 조개껍질로 이렇게 하고 싶어요.총괄해 보다.
뭔가 있으면 적당히 추가될 수도 있어.
awk에서 싱글 쿼터, 더블 쿼터 처리
참고했던 기사지만 보자마자 바로 이해가 안 돼요.
분해하면서 생각하다
두 개의 쿼터로 동그라미를 치다
참고로 awk의 print () 는 () 자체를 생략할 수 있습니다
$ cat amaimono.txt | awk '{print $1}'
apple
banana
choco
$ cat amaimono.txt | awk '{print($1)}'
apple
banana
choco
"
에 설정된 문자열 처리(변수로 전개되지 않음)$ cat amaimono.txt | awk '{print "$1"}'
$1
$1
$1
"
를 문자열로 처리하려고 "
포위하면서 \
탈출"\""
→ "
$ cat amaimono.txt | awk '{print "\"" $1}'
"apple
"banana
"choco
처음과 끝을 각각 둘러싸면 이렇게 됩니다.$ cat amaimono.txt | awk '{print "\"" $1 "\""}'
"apple"
"banana"
"choco"
awk로 홀로그램 가방으로.
단과탈의 상황은 좀 복잡하다.
$ cat amaimono.txt | awk '{print "'\''" $1 }'
'apple
'banana
'choco
문자열로 처리하고 싶어서 "
포위와 동시에 단과트 포위'\''
로 피한 단과트.awk에 맡긴 프로그램 text 자체가 싱글 쿼터에 둘러싸여 있기 때문
\'
만 해도 프로그램 text를 둘러싼 싱글 쿼터로 여겨진다.따라서 프로그램 자체를 따옴표로 잠시 둘러싸고 문자로 쓴 따옴표를 피한 다음에 프로그램의 후속을 쓰기 위해 쓴 따옴표를 써야 한다
"'\''"
→ '
$ cat amaimono.txt | awk '{print "'\''" $1 "'\''"}'
'apple'
'banana'
'choco'
awk 출력에서 쉼표로 구분하기
OFS를 지정합니다.
$ echo "a b c" | awk 'BEGIN{OFS=","} {print $1, $2, $3}'
a,b,c
{print}
라면 {print $0}
로 해석되기 때문에 OFS가 유효하지 않다.참조:
awk에서 입력한 구분자를 공백 이외의 문자로 설정하기 바랍니다
FS 지정 또는 -F 옵션 사용
cat test2
ばなな,100
りんご,120
ぶどう,200
$ cat test2 | awk -F, '{print $1}'
ばなな
りんご
ぶどう
$ cat test2 | awk 'BEGIN{FS=","} {print $1}'
ばなな
りんご
ぶどう
cut 명령어도 사용 가능$ cat test2 | cut -d, -f1
ばなな
りんご
ぶどう
리디렉션 및 파이프
>
: 표준 출력을 지정한 파일에 씁니다(파일이 없으면 새로 만듭니다. 파일이 있으면 0바이트로 설정하고 덮어씁니다).>|
에서 지정합니다. $ echo "d e f" > hogefile
zsh: file exists: hogefile
$ echo "d e f" >| hogefile
$ cat hogefile
d e f
>>
: 표준 출력을 지정한 파일에 씁니다(파일이 없으면 새로 만듭니다. 파일이 있으면 추적)2>>
: 표준 오류를 지정한 파일에 씁니다(파일이 없으면 새로 만듭니다. 파일이 있으면 추적)<
: 표준 입력을 지정합니다.파일이 아니더라도 명령 결과를 전송할 수 있음cut -d" " -f 1 <(ls -lt)
合計
-rw-rw-r--
-rw-rw-r--
-rw-rw-r--
# 以下コマンドと一緒
ls -lt | cut -d" " -f
&>
: 표준 및 표준 오류 출력을 지정된 파일에 씁니다(파일이 없으면 새로 만듭니다.파일이 있으면 0바이트로 설정하고 덮어씁니다.)aws s3 cp s3://hoge hoge &> /dev/null
|&
: 표준 출력, 표준 오류 출력을 다음 명령의 표준 입력으로 설정합니다.2>&1 |
와 함께1>&2
: 표준 출력을 표준 오류와 같은 출력 목적지로 변경2>&1
: 표준 오류 출력을 표준 출력과 같은 출력 목적지로 변경xargs
많이 잊어버리기 쉬우니까.
$ cat << FIN | xargs -I{} sh -c 'echo hello {}'
> Alice
> Bob
> Cathy
> FIN
hello Alice
hello Bob
hello Cathy
I : replace-str.옵션 뒤에 지정한 문자열을 표준 입력에서 받은 값으로 바꾸기
sh-c<문자열>: 지정된 문자열을 실행하는 명령
$ echo alice
alice
$ sh -c 'echo alice'
alice
일련의 파이프 명령을 xargs에 전달하려면sh-c<문자열>을 통해 실행합니다.xargs 다음에 명령을 지정하지만, 아무것도 지정하지 않으면 echo 명령을 사용합니다.
※ -p를 지정하면 xargs가 수행할 명령을 확인할 수 있습니다.
참조:
$ cat << FIN | xargs -I{} -p sh -c 'echo hello {}'
pipe heredoc> Alice
pipe heredoc> Bob
pipe heredoc> Cathy
pipe heredoc> FIN
sh -c 'echo hello Alice' ?...
sh -c 'echo hello Bob' ?...
sh -c 'echo hello Cathy' ?...
특정 문자열과 일치하는 문자 가져오기
grep -rho 'hoge' ./* --exclude=fuga
여러 문자열 검색
and 조건으로 검색하면 파이프로 가장 빨리 연결됩니다.
grep hoge in.txt | grep moga
or 조건이라면 -e 연결 조건으로grep -e hoge -e fuga in.txt
많은 문자열 중 하나와 일치하는지 검색
양이 많은 경우(종사자 목록에서 ID로 검색하려는 등) 파이프로 연결할 수 없더라도 검색하고자 하는 문자열을 파일에 열거해서
-f
옵션으로 지정할 수 있다.$ cat test
ばなな 100
りんご 120
ぶどう 200
$ cat pattern.txt
100
ばなな
200
# 1行目は、ばななと100に一致している
$ grep -f pattern.txt test
ばなな 100
ぶどう 200
참조:한 번에 대용량 파일 교체
awk로 특정 파일 이름으로 변경된 케이스 명령을 조립하여 표준 입력을 통해sh에 전달합니다.
참조:
$ ls hoge.*
hoge.json hoge.swp hoge.txt
# コマンドを組み立て
$ ls hoge.* | awk -F"." '{print "mv "$0" moge."$2}'
mv hoge.json moge.json
mv hoge.swp moge.swp
mv hoge.txt moge.txt
# 組み立てコマンドを実行する
$ ls hoge.* | awk -F"." '{print "mv "$0" moge."$2}' | bash
$ ls moge.*
moge.json moge.swp moge.txt
uid 생성
$ uuidgen
e283483f-7638-4af4-92f3-7a97be2e6081
표준 오류 출력을 로그에 쓰기
exec 명령을 사용하면 이 과정의 표준 오류 출력이 지정한 파일에 기록됩니다.(스크립트를 쓸 때 가장 먼저 쓰기)
exec 2> /var/tmp/logfile
일괄 처리에서 tmp 데이터에 중도 처리 파일을 출력하고 로그를 통해 내용을 확인하고자 하는 경우상기 exec와 조합하는 동시에cat로 출력하는 표준 오류가 있으면 로그를 쓸 수 있습니다.
cat ${tmp}-data_log 1>&2
매개변수를 사용한 후
function이나 스크립트에서 전달된 매개 변수는
$1, $2,...
얻을 수 있지만, N 번째 이후의 매개 변수를 찾으려면 ${@: N}$ function args_test() {
function> echo "引数すべて: $@"
function> echo "引数1個目: $1"
function> echo "引数3個目以降:${@:3}"
function> }
$ args_test a b c d e
引数すべて: a b c d e
引数1個目: a
引数3個目以降:c d e
실행 조작
xargs를 사용합니다.
여러 줄을 한 줄로 합치다
% cat test
ばなな 100
りんご 120
ぶどう 200
% cat test| xargs
ばなな 100 りんご 120 ぶどう 200
행마다 한 줄을 총결산하다
xargs -L数字
에서 각 지정된 행을 한 행으로 요약 % cat test2
Aさん
1/1うまれ
男
Bさん
2/1生まれ
女
Cさん
3/1生まれ
男
# 3行ごとに1行にまとめる(1行は3列になる)
% cat test2 | xargs -L3
Aさん 1/1うまれ 男
Bさん 2/1生まれ 女
Cさん 3/1生まれ 男
다열을 일렬로 열거하다
xargs -n数字
에서 지정-n, --max-args
xargs에서 지정한 명령을 실행할 때의 매개 변수 상한선입니다.참조:
% cat test
ばなな 100
りんご 120
ぶどう 200
# 1
% cat test | xargs -n1
ばなな
100
りんご
120
ぶどう
200
또는tr명령을 사용하여 줄 바꾸기를 삭제합니다(마지막 줄 바꾸기도 없습니다).$ cat test | tr -d '\n'
ばなな 100りんご 120ぶどう 200
이전 매개변수 작업
$_
이전 명령의 마지막 매개 변수를 저장하는 특수 변수cat이나vils의생각,cd의mkdir의생각에사용
$ ls tmp-file
tmp-file
$ echo $_
tmp-file
$ mkdir hoge ; cd $_
파일의 일부를 수정하고 덮어쓰기
$ cat memo
りんご 100
ばなな 200
オレンジ 300
$ cat memo | sed 's/オレンジ/グレープ/' > memo_edit
$ cat memo_edit
りんご 100
ばなな 200
グレープ 300
$ mv memo_edit memo
확인 단계를 건너뛰면sed의 i 옵션으로 덮어쓸 수 있습니다
$ sed -i 's/オレンジ/グレープ/' memo
$ cat memo
りんご 100
ばなな 200
グレープ 300
○ 줄별 파일 분할
split 명령을 사용합니다.
-l로 분할된 행 수를 지정할 수 있습니다.
split -l 3 -d ファイル名 [分割後のファイル名のprefix]
참조:빈 줄 삭제
sed '/^$/d'
seq 명령
seq10이면 1부터 10까지의 순서입니다.
한 걸음 두 번 진행하고 싶은 경우 시작, 증가 값, 끝의 3가지 값을 지정합니다
두 덩어리
$ seq 2 2 10
2
4
6
8
10
seq 명령 형식
-f
문자열에 연결 가능$ seq -f 'user_%g' 1 10
user_1
user_2
user_3
user_4
user_5
user_6
user_7
user_8
user_9
user_10
형식%02g
등으로 0 을 채울 수 있음$ seq -f 'user_%02g' 1 5
user_01
user_02
user_03
user_04
user_05
확인 문자열
hoge="hoge"
# -n で改行コードを無くさないと駄目
echo -n ${hoge} | wc -m
# もしくは
echo ${#hoge}
참조:표시할 텍스트의 폭 조정
축소를 잘 조정하고 싶어요.
$ cat amaimono.txt
商品 金額 在庫数
apple 10 100
banana 200 30
choco 300 99999
$ cat amaimono.txt | column -t
商品 金額 在庫数
apple 10 100
banana 200 30
choco 300 99999
쉼표 분할의 경우 경계를 지정해야 함 cat amaimono.csv | column -t
商品,金額,在庫数
apple,10,100
banana,200,30
choco,300,99999
$ cat amaimono.csv | column -t -s,
商品 金額 在庫数
apple 10 100
banana 200 30
choco 300 99999
많은 문자 생성
동일 문자 생성
브레이크가 확장될 때 동일한 문자 생성
hoge 뒤에 공백이 추가되었습니다.
10개를 생성하려면 9개
,
가 필요합니다.$ echo hoge{,,,,,,,,,}
hoge hoge hoge hoge hoge hoge hoge hoge hoge hoge
명령은 같은 문자를 생성합니다
아마 가장 잽싸다
$ yes hoge | head -n 10
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
hoge
yes [文字列]
에서'yes'대신 지정한 문자열을 반복해서 열거합니다.이렇게 하면 Ctrl+C가 강제로 끝나지 않으면 멈출 수 없기 때문에 헤드가 원하는 양으로 뽑아야 합니다.
참조:
Reference
이 문제에 관하여(조개껍질로 이거 어떻게 해?자신의 비망록이 되다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://zenn.dev/jnuank/articles/29575e9c9b87ea텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)