学会shell(二)

cat sample.js | tr -d '\n\t' | tr -s ' '| sed 's:/\*.*\*/::g'
while read line;
do
echo $line;
done < file.txt

cat file.txt | (while read line ; do echo $line ; done)
(for w in $line;do echo $w;done)
(for((i=0;i<${#word};i++)) do echo ${word:i:1}; done)
${#word}:the length of word

paste按列合并文件:paste *.txt -d ";"
cat 按行合并文件:cat *.txt

打印文件或行中第n个单词或列:awk cut
ls -l | awk '{print $1":"$9}'
打印不同行或样式之间的文本:awk grep sed
 cat 1.txt | awk 'NR==1,NR==2'
awk '/start_pattern/,/end_pattern/' 1.txt

文本中重复匹配之前的样式:(回文)
sed
sed '/^\(.\)\(.\)\2\1/p' 匹配四个长度的回文
sed awk 可参考 《sed与awk(第2版)》

rev 逆序echo "xie" | rev
if [ $# -ne 1 ];
then
echo "Usage : $0 string"
exit -1
fi

if [[ "$1" == "$(echo $1 | rev)" ]];
then
echo "Palindrome"
else
echo "Not Palindrome"
fi

echo $sentence | rev | tr ' ' '\n'| tac | tr '\n' ' ' | rev  tac行反转 rev字符反转
seq 5 | tac -s "\t"
tac cat
seq 11 | awk '{ lifo[NR]=$0; lno=NR} END{for(;lno>-1;lno--){print lifo[lno];}}'
使用关联数组 NR行数
egrep -0 RE file
email:[A-Za-z0-9.]+@[A-Za-z0-9.]+\.[A-Za-z]{2,4}
egrep -o '[A-Za-z0-9.]+@[A-Za-z0-9.]+\.[A-Za-z]{2,4}' email.txt
URL:http://[A-Za-z0-9\-\.]+\.[a-zA-Z]{2,3}

打印样式之前或之后的n行
grep context line
grep -A 3 RE filename  之后3行
-B 3 之前3行
-C 2 前后2行

移除包含某个单词的句子:sed 利用“”替换匹配的句子
sed 's/[^.]*mobile phones[^.]*\.//g/' filename
[^.]* 匹配除.之外所有字母的组合,用于匹配一个句子

awk实现 head tail tac uniq 逐行操作
awk ‘NR<=10’ filename head -n 10
awk '...'   tail -n 10
awk '{ buffer[NR] = $0;} END{ for(i=NR;i>0;i--) {print buffer[i]}}' filename

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值