シェルの注意事項(10)

1. 1行目の最後の文字を削除し、2行目の最後から2番目の文字を削除し、2行目のn番目の文字を削除します。これを実現する方法はありますか?

ABCDEFG
ABCDEFG
ABCDEFG
ABCDEFG
ABCDEFG

awkの問題解決:

awk 'BEGIN{FS=OFS=""}{if(NF>=NR)$(NF-NR+1)="";print}' txt

ここに画像の説明を挿入
分析:
ここに画像の説明を挿入

次に、最後の括弧内のコンテンツを定期的に取得する方法。(こんにちは)私は中国人です(はい)

#1
(?<=)[\u4e00-\u9fa5]{
    
    2}(?!.*[\u4e00-\u9fa5]{
    
    2})(?=)

#2
echo '(您好)我是中国人(是的)啊啊啊啊' | grep -Po '.*(\K[^)]+'

#3
sed -r 's#.*((.*?))$.*#\1#' zhongwen.txt

ここに画像の説明を挿入
ここに画像の説明を挿入

3.シェルを介して、初日に00、01、02、03、04を印刷し、10日目に05、06、07、08、09、...を印刷し、45、46、47、48を印刷します。 、49、そして11日目は再び00から始まります。このようにループし続けます。

test.shコンテンツ:

#	seq -w 0 49 | xargs -n 5 > 1.txt
#!/bin/bash
#1.txt 内容为 seq -w 0 49 | xargs -n 5
currPath=/root/shellDir/program/testFile/1.txt
lineNum=`seq -w 0 49 | xargs -n 5 | wc -l`
IFS=$'\n'
#set -x

indexNum=0
for i in  `cat $currPath`
do
        #echo $i
        arrayA[$indexNum]=$i
        let indexNum+=1
done

#echo ${arrayA[*]}
count=1
while [ 1 ]
do
        echo ${
    
    arrayA[$((count-1))]}
        let count+=1
        sleep 1s

        if [ $count -gt 10 ];then
                count=1
                echo -e "\n\n num reset...."
        fi
done
	

実行結果
ここに画像の説明を挿入
兄弟とのその他の考え方:
1。
ここに画像の説明を挿入

2、

用定时任务加一个临时文件,文件里写满00到49,定时任务每次从里面读5行,顺便把读读到的5行去掉并追加到文件尾部

4、メモの指示

jotソースパッケージ:
https //launchpad.net/ubuntu/+archive/primary/+sourcefiles/athena-jot/9.0-7/athena-jot_9.0.orig.tar.gz

Jotはseqに似ていますが、場所によっては便利
ここに画像の説明を挿入
ここに画像の説明を挿入
です。上の図は次のように書くことができます
ここに画像の説明を挿入
。seqよりも多くのものを展開し、文字を順番にリストし、
ここに画像の説明を挿入
等差数列
ここに画像の説明を挿入
を-1から1に均等に11の部分に分割します。
ここに画像の説明を挿入

5。「-」の前の数字に従って小さいものから大きいものへのソート方法

1-aa
2-sa
3-aad
41-aac
55-qa
61-aa
7-qa
8-aa
9-aa
12-bb
15-vv
``
解法1  sort:
```shell
sort -t"-" -k1 -n 2.txt

ここに画像の説明を挿入
解決策2awk:
ここに画像の説明を挿入

おすすめ

転載: blog.csdn.net/Nightwish5/article/details/110850333