2019-07-22 18:35:00 weixin_30521161 阅读数 416
  • Linux awk文本处理

    基本掌握C#Winform水晶报表的设计方法 基本掌握C#Winform水晶报表的使用技巧

    26017课时 0分钟 0人学习 杨猛
    免费试看

变量a是一个带空格的字符串,现在用"hdpusr400"替换变量a中的"hduser302":

 1 [liusiyi@localhost ~]$ echo $a
 2 -rw-r----- 3 hduser302 hduser302 3336 2019-07-12 17:35 /apps/hduser302/student/properties/xxyy/IMP_00004_XXYY_USE_PERSONALINFO.properties
 3 
 4 #用变量替换${a//}做字符串替换
 5 [liusiyi@localhost ~]$ echo ${a/hduser302/hdpusr400}   #变量a中的第一个匹配的字符串会被替换
 6 -rw-r----- 3 hdpusr400 hduser302 3336 2019-07-12 17:35 /apps/hduser302/student/properties/xxyy/IMP_00004_XXYY_USE_PERSONALINFO.properties
 7 [liusiyi@localhost ~]$ echo ${a//hduser302/hdpusr400}  #变量a中所有匹配的字符串都会被替换
 8 -rw-r----- 3 hdpusr400 hdpusr400 3336 2019-07-12 17:35 /apps/hdpusr400/student/properties/xxyy/IMP_00004_XXYY_USE_PERSONALINFO.properties
 9 
10 #用sed做字符串替换
11 [liusiyi@localhost ~]$ echo $a | sed 's/hduser302/hdpusr400/'   #sed 's///' 用来替换第一个匹配的字符串
12 -rw-r----- 3 hdpusr400 hduser302 3336 2019-07-12 17:35 /apps/hduser302/student/properties/xxyy/IMP_00004_XXYY_USE_PERSONALINFO.properties
13 [liusiyi@localhost ~]$ echo $a | sed 's/hduser302/hdpusr400/g'   #sed 's///g'用来替换所有匹配的字符串
14 -rw-r----- 3 hdpusr400 hdpusr400 3336 2019-07-12 17:35 /apps/hdpusr400/student/properties/xxyy/IMP_00004_XXYY_USE_PERSONALINFO.properties
15 
16 #用awk做字符串替换 (这个例子中用sub或gsub都可以,默认是空格为分隔符)
17 [liusiyi@localhost ~]$ echo $a | awk '{gsub(/hduser302/,"hdpusr400",$3);print $0}' #指定替换第一个
18 -rw-r----- 3 hdpusr400 hduser302 3336 2019-07-12 17:35 /apps/hduser302/student/properties/xxyy/IMP_00004_XXYY_USE_PERSONALINFO.properties
19 [liusiyi@localhost ~]$ echo $a | awk '{gsub(/hduser302/,"hdpusr400");print $0}'   #全部替换
20 -rw-r----- 3 hdpusr400 hdpusr400 3336 2019-07-12 17:35 /apps/hdpusr400/student/properties/xxyy/IMP_00004_XXYY_USE_PERSONALINFO.properties

 

END

 

转载于:https://www.cnblogs.com/happyliusiyi/p/11227650.html

2020-03-19 11:42:11 whatday 阅读数 162
  • Linux awk文本处理

    基本掌握C#Winform水晶报表的设计方法 基本掌握C#Winform水晶报表的使用技巧

    26017课时 0分钟 0人学习 杨猛
    免费试看

变量a是一个带空格的字符串,现在用"hdpusr400"替换变量a中的"hduser302":

[liusiyi@localhost ~]$ echo $a
-rw-r----- 3 hduser302 hduser302 3336 2019-07-12 17:35 /apps/hduser302/student/properties/xxyy/IMP_00004_XXYY_USE_PERSONALINFO.properties

#用变量替换${a//}做字符串替换
[liusiyi@localhost ~]$ echo ${a/hduser302/hdpusr400}   #变量a中的第一个匹配的字符串会被替换
-rw-r----- 3 hdpusr400 hduser302 3336 2019-07-12 17:35 /apps/hduser302/student/properties/xxyy/IMP_00004_XXYY_USE_PERSONALINFO.properties
[liusiyi@localhost ~]$ echo ${a//hduser302/hdpusr400}  #变量a中所有匹配的字符串都会被替换
-rw-r----- 3 hdpusr400 hdpusr400 3336 2019-07-12 17:35 /apps/hdpusr400/student/properties/xxyy/IMP_00004_XXYY_USE_PERSONALINFO.properties

#用sed做字符串替换
[liusiyi@localhost ~]$ echo $a | sed 's/hduser302/hdpusr400/'   #sed 's///' 用来替换第一个匹配的字符串
-rw-r----- 3 hdpusr400 hduser302 3336 2019-07-12 17:35 /apps/hduser302/student/properties/xxyy/IMP_00004_XXYY_USE_PERSONALINFO.properties
[liusiyi@localhost ~]$ echo $a | sed 's/hduser302/hdpusr400/g'   #sed 's///g'用来替换所有匹配的字符串
-rw-r----- 3 hdpusr400 hdpusr400 3336 2019-07-12 17:35 /apps/hdpusr400/student/properties/xxyy/IMP_00004_XXYY_USE_PERSONALINFO.properties

#用awk做字符串替换 (这个例子中用sub或gsub都可以,默认是空格为分隔符)
[liusiyi@localhost ~]$ echo $a | awk '{gsub(/hduser302/,"hdpusr400",$3);print $0}' #指定替换第一个
-rw-r----- 3 hdpusr400 hduser302 3336 2019-07-12 17:35 /apps/hduser302/student/properties/xxyy/IMP_00004_XXYY_USE_PERSONALINFO.properties
[liusiyi@localhost ~]$ echo $a | awk '{gsub(/hduser302/,"hdpusr400");print $0}'   #全部替换
-rw-r----- 3 hdpusr400 hdpusr400 3336 2019-07-12 17:35 /apps/hdpusr400/student/properties/xxyy/IMP_00004_XXYY_USE_PERSONALINFO.properties

 

 

2012-12-14 16:23:45 duqi_yc 阅读数 1609
  • Linux awk文本处理

    基本掌握C#Winform水晶报表的设计方法 基本掌握C#Winform水晶报表的使用技巧

    26017课时 0分钟 0人学习 杨猛
    免费试看

1,产生一个数组

Myarry[1]="How are you doing today?"

print Myarry


2,如果要截取其中的子串,需要用到substr()

Mysub=substr(myarry[1],startpos,maxlen)

#startpos,起始字符位置;

#maxlen,抽取字符最大长度。


3,匹配字符串,需要用到match()

#返回匹配的起始位置,如果没有找到匹配,返回0;

#使用RSTART,RLENGTH返回第一个匹配的位置,以及占据的字符跨度;

match(Myarray[1],/you/),RSTART,RLENGTH

9,9,3


4,字符串替换,需要用到sub(),gsub()

#regexp,第一个匹配的字符序列;replstring替换匹配的序列;

sub(regexp,replstring,mystring)

#gsub,全局替换

gsub(regexp,replstring,mystring)



2019-08-27 20:15:40 appleyuchi 阅读数 1704
  • Linux awk文本处理

    基本掌握C#Winform水晶报表的设计方法 基本掌握C#Winform水晶报表的使用技巧

    26017课时 0分钟 0人学习 杨猛
    免费试看

#----------------------------------------------第1个例子----------------------------------------------------------------

a.txt内容为:

ABC#EDF#GHI#JKL#MNO
ABC#EDF#GHI#JKL#MNO
ABC#EDF#GHI#JKL#MNO

 cat a.txt|awk 'BEGIN{FS="#";OFS="|"}{print $1,$2,$3,$4,$5}'

运行结果:

ABC|EDF|GHI|JKL|MNO
ABC|EDF|GHI|JKL|MNO
ABC|EDF|GHI|JKL|MNO

 

#----------------------------------------------第2个例子----------------------------------------------------------------

a.txt内容为:

ABC#
ABC#
ABC#

cat a.txt|awk 'BEGIN{RS="#\n";ORS="|"}1'

输出结果如下:

ABC|ABC|ABC#|

 

2019-01-02 15:27:00 weixin_30445169 阅读数 70
  • Linux awk文本处理

    基本掌握C#Winform水晶报表的设计方法 基本掌握C#Winform水晶报表的使用技巧

    26017课时 0分钟 0人学习 杨猛
    免费试看

awk指定输出列:

awk '{print $0} file'    #打印所有列
awk '{print $1}' file #打印第一列 awk '{print $1, $3}' file #打印第一和第三列 cat file | awk '{print $3, $1}' #打印第三列和第一列,注意先后顺序。 cat file | awk '{print $3, $NF}' #打印第三列和最后一列 awk -F ":" '{print $1, $3}' #以“:”为分隔符分割列,然后打印第一列和第三列

$0表示所有列 

-F:指定分隔符

$(NF)表示最后一列,$(NF-1)表示倒数第二列,以此类推。

 

特殊案例:如果我想打印N列之后的所有列,该怎么办?

解决方法是,把前N列都赋值为空,然后打印所有列。

awk '{for(i=1;i<=N;i++){$i=""}; print $0}' file

转载于:https://www.cnblogs.com/zndxall/p/10208808.html