String awk按字符索引打印substr(),忽略substr末尾的空格
我有这样的数据String awk按字符索引打印substr(),忽略substr末尾的空格,string,bash,awk,String,Bash,Awk,我有这样的数据 12345678901234567890123456789012345678 // this line just character index // a0001 some text other_data_1 a0002 some_text_connected other_data_2 a0003 other_data_3 在每行的substr($0、7、20)中,都有一些文本。我可以用打印机打印便笺文本 awk '{
12345678901234567890123456789012345678 // this line just character index //
a0001 some text other_data_1
a0002 some_text_connected other_data_2
a0003 other_data_3
在每行的substr($0、7、20)中,都有一些文本。我可以用打印机打印便笺文本
awk '{print substr($0,7,20)}' testfile
并获得:
some text
some_text_connected
(20 spaces here)
提前谢谢 您可以调用
sub
删除所有尾随空格:
awk '{s = substr($0,7,20); sub(/[[:blank:]]+$/, "", s); print (s == "" ? "NA" : s)}' file
print(s==“”?“NA”:s)
将在字符串s
为空时打印NA
,否则打印s
。您可以尝试:
带着awk
还是跟塞德一起
sed -E 's/([^ ]* )(..*)/\2/;t;s/.*/NA/' testfile
这是此列表中
sub
的下一个字符串函数:。祝你好运。不会有任何(这里有20个空格)
-只有一行没有空格的空行确定这里可能有从7到26的字符索引中的空格,$2可能只能识别该范围内的部分文本,如示例数据的第二行。@edmorton你介意详细解释一下/[:blank:]+$/
表示子字符串的尾随空格?谢谢@在sub
函数中,regex[[:blank:][]+$
检查substr
函数后的尾随空格并将其删除。表达式print(s==“”?“NA”:s)
如果字符串s
为空,则打印NA
,否则打印字符串s
。
sed -E 's/([^ ]* )(..*)/\2/;t;s/.*/NA/' testfile